再次抽奖送书!安卓传奇:Android 缔造团队回忆录

这是一本关于从一个简单想法到发展成全球使用用户最多的移动端操作系统的故事。作者 Chet Haase 是 Android 视窗系统的核心开发者,也是 Android 性能优化方面的专家。正是得益于他与其团队的杰出工作,给广大用户提供了高效且流畅的动画效果以及优雅且好用的编程控件。身为 Android 团队的早期成员,由他来讲述安卓系统演变故事,其真实性与完整性是有保障的。

书中有大量珍贵的照片以及作者与主要开发者的访谈记录,也介绍了许多技术背后的故事,当然也包含技术决策者们的思考,比如安卓为什么要采用 Java 作为首要开发语言?如果你是 Android 从业者,不管你是对 Chet Haase 大神个人的崇拜,还是对 Android 系统发展壮大的历史感兴趣,这本书都值得一读。

相信大部分读者接触 Android 的时候,Android 已经成了一个庞然大物,国内市场,华为、小米、oppo、vivo、魅族等厂商都在推出搭载 Android 系统的手机,市场上除了 iOS 就是 Android。开发者中,iOS 与 Android 也是各分半边天。Android 系统由于是一个开源系统,手机厂商基于 Android 系统定制的各种 OS 也是百花齐放,给我们这种 Android 系统开发者提供了一个参与和改进 Android 系统的机会。看着自己参与的手机产品被数以百万计的消费者使用(吐槽),也算是达成了一个小成就吧。

记得自己最早使用的手机是魅族的 M8,M8 采用的是 Windows CE 系统,手机不错,但是软件生态一塌糊涂;M9 开始使用 Android 系统,这也是我用的第一台 Android 系统的手机,从此一发不可收拾,从大学时期开始开发 Android App 和小游戏,再到毕业后去魅族做了系统开发,和 Android 系统的关系越来越近。从 Android 1.x 时期一直做到现在,看着 Android 系统一个版本一个版本变得越来越好、越来越流畅(Project Butter)、越来越多人关注和使用(以及吐槽),内心还是非常开心的。

5b5abb070ae47ad73901fbbe3337ec5a.png
魅族 M9

如此成功的一个操作系统,它最初是怎样被创造出来的呢?Android 系统底层是庞大的 Linux,最底层要考虑各个设备厂商的兼容,系统层要考虑核心库、编程语言、图形系统、多媒体系统、系统框架等,涉及到 App 开发则还要有 UI 工具库、SDK、系统 App、浏览器等。将这样庞大繁杂的各个层整合成一个操作系统,难度可想而知,尤其是从 0 到 1 这个过程。

Chet Haase 是 Android 开发者关系首席倡导者,2010 年加入 Android,他花了四年时间,采访了许多早期 Android 团队的大部分成员,深入幕后,挖掘 Android 鲜为人知的精彩故事,并以幽默诙谐的笔风呈现给读者,它就是今天要送给大家的这本《安卓传奇:Android 缔造团队回忆录》(英文名是:Androids: The Team That Built the Android Operating System)。推荐每个搞 Android 的都去买一本看看,技术书看累了的时候,换这本看看,就当是给自己打鸡血了~

ce1c7fceab30a7476068c45f060166c9.jpeg
Android 开发者关系首席倡导者 Chet Haase

书中一些有趣的内容

关于书里的内容,大家拿到书就自己细品吧,很多故事还是很好玩的

主要内容

9d1af77fc08352ea611d203caf916570.jpeg

大纲

b094fb5b309a86c32234ed946863ecb5.jpeg a687fd662e6fc6a21c0d376f61ac6ef7.jpeg

Android 为何能成功?

8ba3e1b9acc5581de70547f7a1d8d060.jpeg

Android 为何选择 Java 为最初的编程语言?

21bedfdd1d9b0b404aa749306d8a379d.jpeg

作者补充内容

f8829053589c0c56218e03a9d5673a30.png

本书发布后,由于篇幅原因,删除了一些内容,后来作者将这些部分发到了 Medium 里面,感兴趣的可以去看一下

Android 有很多优势:拥有合适技能的强大团队可以支持此类设备的硬件功能的融合对市场足够了解以了解需要什么的管理团队,以足够勤奋的团队成员。但是,如果没有时机这个基本要素,所有这一切都将是徒劳的。当时框架团队的经理 Mike Cleron 观察到:“如果你重组团队并说,‘我们要构建另一个 Android’,那我们就可以构建另一个 Android。但我不相信我们能创建另一个 Android 生态系统,无论是 OEM 还是开发者生态系统,因为其中很多都取决于时机,而且只是在那个时候就在那里。”

  1. Why Android Worked[1]

  2. The Team’s Take: Why Android Worked[2]

Audio 版本

这本书有作者亲自录制的 Audio 版本,有条件的同学可以听一下

Androids: The Team That Built the Android Operating System Audible Logo Audible[3]

与作者的合照

2019 年有幸在参加活动的时候与偶像拍照

2516269e115667eca32853b2a50a9bb0.jpeg
2019 年在深圳与作者的合影

抽奖

945337b535fdb0b24ec1245d6caa1204.jpeg

购买

等不及的也可以自己购买,点击下面的链接或者点击 查看原文,就可以去京东买了

参考资料

[1]

Why Android Worked: https://chethaase.medium.com/why-android-worked-83318dc40fd6

[2]

The Team’s Take: Why Android Worked: https://chethaase.medium.com/the-teams-take-why-android-worked-dbde57aabc03

[3]

Androids: The Team That Built the Android Operating System Audible Logo Audible: https://www.amazon.com/Androids-Built-Android-Operating-System/dp/B0B6YDQJW2/ref=sr_1_1?crid=1YRC4Q0W58K0I&keywords=androids+the+team+that+built+the+android+operating+system&qid=1669463729&sprefix=androids%2Caps%2C357&sr=8-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现每日抽奖功能到达抽奖页面抽奖的步骤如下: 1. 在 Android 应用程序的布局文件中添加一个按钮,用于触发抽奖事件。 ```xml <Button android:id="@+id/btn_lucky_draw" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击抽奖" /> ``` 2. 创建一个新的 Activity,用于实现抽奖功能,在该 Activity 中添加一个布局文件,用于显示抽奖结果。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_lucky_draw_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="恭喜您中奖了!" android:layout_centerInParent="true"/> </RelativeLayout> ``` 3. 在按钮的点击事件中启动抽奖 Activity,并传递相关参数。 ```java Button btnLuckyDraw = findViewById(R.id.btn_lucky_draw); btnLuckyDraw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 启动抽奖 Activity Intent intent = new Intent(MainActivity.this, LuckyDrawActivity.class); // 传递相关参数 intent.putExtra("userId", "123456"); startActivity(intent); } }); ``` 4. 在抽奖 Activity 中获取传递的参数,并执行抽奖逻辑。 ```java public class LuckyDrawActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lucky_draw); // 获取传递的参数 String userId = getIntent().getStringExtra("userId"); // 执行抽奖逻辑 String result = doLuckyDraw(userId); // 显示抽奖结果 TextView tvLuckyDrawResult = findViewById(R.id.tv_lucky_draw_result); tvLuckyDrawResult.setText(result); } private String doLuckyDraw(String userId) { // TODO: 实现抽奖逻辑 return "恭喜您中奖了!"; } } ``` 以上就是实现每日抽奖功能到达抽奖页面抽奖的基本步骤,具体实现根据业务需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值