作者序

金大佑

长达两年半的写作终于结束了,真让我耗尽心力。公司、家庭、写作齐头并进,经常让我觉得时间不够用。体力和健康状况大不如前,这也牵制了我的写作计划。我有好几十次想过就此放弃,有好几百次问过自己:“为什么要自讨苦吃?为什么要做这些?”频繁的加班,甚至周末也要加班,这让我很难保证写作时间。孩子出生后,时间就更少了。尽管这样,我仍旧坚持每天更新稿件,心想着哪怕每天只写一行也好。就凭着这种不放弃的态度,本书最终得以面世。如果中途放弃的话,我一定会抱憾终身。

Android 的版本不断更新,我最初接触Android 的时候,是Android Cupcake(1.5)版本,现在已经升级到了Android Jelly Bean Plus(4.2)。在此期间,Android 取得了令人瞩目的发展,是目前拥有最大用户群的智能手机OS。Android 发布之初很难找到相关资料,而且在实际应用领域,使用Android 的人也只是少数。我本人也曾经通过Google 搜索Android 相关资料,但找到的信息只停留在基础理论水平。当然,现在也经常难以找到真正需要的内容,不得不自己解决问题。因此,我开始整理开发中所需资料,希望有一天能够以某种形式公开这些资料,以帮助那些因为资料不足而伤脑筋的开发人员。一个偶然的机会,我在网络上看到了招募作者的网络招聘信息,于是决定参与其中,与团队中给我很大影响的朴宰永负责人,以及对Android 平台有很大兴趣的文炳元先生合作,最终完成了这本书。

不知道大家是否听说过马尔科姆• 格拉德威尔(Malcolm Gladwell)在《异数》(Outsider)一书中介绍的“一万小时定律”?“一万小时定律”是指,无论任何领域,如果想要成为一名专家,那么至少要投入一万小时。这一万小时是由什么组成的呢?只要工作时间合计超过一万小时,就可以成为该领域的专家吗?如果以每周工作40 小时为基准,工作一年的话有2000 小时,这样一来,如果一份工作做5 年,那么就在该领域有了一万小时的经验,应该就可以说是一位专家了。然而我们面对的现实情况却是,从事开发工作5 年的开发人员有时候做调试都觉得吃力,更别说做系统设计了。是的,“一万小时定律”不是单纯的工作时间总和,而是为了提高自己的实力所投资的时间总和。我想,这本书也是我提高自身实力过程中的产物。在边写书边思考如何向读者进行说明、如何更好地帮助读者理解的过程中,我也学到了很多。这种思考成为非常有用的知识及经验,可以在实际开发中解决很多问题。

与Android 初创期相比,现在的Android 开发人员有了大幅增加,然而这样就可以认为进入Android 世界的门槛降低了吗?开源的优点就好比开卷考试的优点,开卷考试虽然为所有人都提供了相同的机会,但是在限定时间内进行考试而得到的结果却有所不同,那些对基础知识掌握透彻的人反而能够得到更好的成绩。同样,开源的优点也使得很多人可以接触到Android 平台的核心,但是这无法降低进入Android 世界的门槛。为什么一线的开发人员仍然会觉得Android开发难度很高呢?是因为Android 的发布速度慢于其他智能手机OS 吗?或者是因为Android 还不够成熟?还是因为MSDN 等强大的开发人员帮助手册还不够完备?

当然,上面所列的原因都是影响Android 开发的要素,但我个人认为,最主要的原因是恶劣的开发环境。极短的项目周期、接连不断的加班、依照Man-Month 投入的人力、不完善的开发人员教育系统等,这些恶劣的开发环境消耗了开发人员的好奇心,反而使Android 变为令开发人员感到痛苦的对象。在这种开发环境下,与其从根本上找到避免出现Bug 的对策,不如快速修复Bug,解决Bug 跟踪系统的问题。我本人开始进行Android 开发后不久,有一次阅读Android 方面的参考书籍时,一个同事问了我这样一个问题:“连开发的时间都不够用,哪儿还有时间看书啊?”我当时是这样回答的:“如果想要更好地掌握开发技术,就一定要学习。如果只注重开发,那么就没有时间学习了。”我一直相信,一名透彻地理解了Android 的工程师可以以一当十。希望有一天,人们能够在开发一线进行smart work,获得充分的休息;开发人员可以完全发挥出自己的能力,不是用“身体”,而是用“头脑”去开发。

本书的出版得到了很多人的帮助。首先要感谢Developerware 出版社的郑权社长和金泰然先生,没有他们就不会有这本书。感谢郑权社长的信任和耐心,感谢泰然先生的指点。另外,和我一同编写本书的朴宰永先生、文炳元先生这段时间也非常辛苦。感谢教我硬件知识的尹玄高级研究员、出色的首席Leader 金承民先生、认真组织测试的金东旭高级研究员和李成信研究员,以及曾与我参加同一项目的李正浩研究员、朴智英研究员、Call/SMS/MMS 各位组员,还有在开发一线与我同甘共苦的尹尚浩高级研究员、与我同年进入公司的刘贤先生。另外,还要感谢百忙之中依然给我鼓励的瑞萨移动公司的金振形本部长、柳仁焕部长、李正久部长、汝成九部长、李江勋副部长、李焕承副部长、宋英伦副部长、李尚京副部长、卓泰勋副部长、金东瑾课长。

如果没有我亲爱的妻子金耀百合和可爱的儿子金河林的体贴,我也无法完成这本书。之前的很多个周末我都因为要编写本书而无法与他们一起度过,现在不用再思考修改稿件了,我想把之前欠他们的时间都补回来。另外,我还要借此机会表达我对家人的爱。

虽然第一次写作结束了,但是不知为何,我还是觉得留下了很多遗憾。在下一次的写作中,我想进一步贴近开发人员,围绕更加轻松的主题进行介绍。我相信下一部书一定会在更短的时间内完成。如果把开发当做工作,会觉得有很大的难度;而如果当做一种兴趣,那么就不会有比这更让人享受的事了。

朴宰永

我还记得2010 年春天,那时,非智能手机已开发了7 年。

在iPhone 的狂潮中,LG、三星等世界级的手机制造商都为追赶智能手机这一潮流而孤军奋战,公司内部也动用了所有力量来开发Android 手机。那时,我也厌倦了不断重复开发非智能手机,正好听说公司内部招募人员开发基于Android 的平板电脑,就毫不犹豫地报了名。开发平板电脑的过程中,我对Android 平台产生了很大兴趣,想要进一步对其进行研究。当时我最喜欢并最看重的后辈金大佑高级研究员给了我一个很好的建议:“您要不要和我一起写本书?” 我由此开始了写作的旅程。

然而,仅凭非智能手机的经验和自信是无法让Android 平台轻易向我打开秘密之门的。从内核到框架都是我未曾在原有非智能手机领域接触过的操作系统与编程语言,这使得Android平台更难理解,也使我经历多次历练,甚至怀疑自己连一行都写不出来。

随着时光的流逝,我的焦躁感及紧迫感日益强烈,要从哪里开始、要做什么,就好像盲人摸象一样。然而,所有的这一切都通过一个众所周知的方式解决了:“勤能补拙”。

虽然每天的工作十分繁忙,但是只要时间允许,我就会对照代码进行测试与调试。我们每周在钟路的学习室编写一章的内容,或者用一整天去完成一幅图。如果由于工作繁忙而导致写作完全没有进展,那么会利用个人休假时间在学校图书馆专心写作,像明天就要参加期中考试的学生一样。就这样过了一年,曾经一行都写不出来的笔记本上,不知不觉已经写满了100 页、200 页。阳光开始照射到曾经一片迷茫的Android 世界。

然而,在写作速度有所提高、完成量也越来越多的时候,Android 更新了版本。开始写作时是GB 版,中间变为ICS 版,2012 年底变为了JB 版。虽然从结构层面来说没有太大变化,但如果想对每一行代码的变量都进行准确说明,修改量是非常大的。

就这样,我们在3 年时间里进行了数十次的检查与修改,终于完成了硬件服务开发这本书。虽然现在很遗憾,没有介绍JB MR 的内容,但是很多设备都安装了JB 版本,由此看来,本书还是非常有价值的。

本书的出版得到了很多人的帮助。

感谢金泰然先生,他像照亮黑夜的灯塔一样,3 年间为我们指明写作的目标和方向,是我们的榜样。和我一同编写本书的金大佑高级研究员、文炳元研究员在这段时间也十分辛苦。感谢朴孝善先生,他本人工作非常繁忙,但依然利用自己的周末时间最早审读了原稿。感谢先后两次在钟路学习室用一整天时间审读本书的金成振主任、李万秀研究员、全盼基研究员。还要感谢校订终稿的文化日报编辑部的全智勉记者,以及将全智勉记者介绍给我们的首尔医院江南中心的全赫泰教授。另外,还要感谢在3 年时间里默默等待的Developerware 出版社的郑权社长。

最后要感谢我的灵魂伴侣、永远的爱人崔恩静,这3 年时间里我每天加班到很晚,周末也要学习,她只能独自陪着范周,十分辛苦。

文炳元

3 年前,和我同时进入公司的泰然哥提议写本书。他当时正在写另一本著作,我经常能听到他聊起写书的情况,因此也对写作产生了一定兴趣。于是我马上接受了建议,并且拜见了将要一同写作的金大佑先生和朴宰永先生。经过3 年的努力,这本书终于呈现在大家面前。

我们3 名作者在技术上还有很多不成熟之处,多次的错误尝试以及其他问题都让我们觉得疲惫不堪,不过最终还是完成了本书。编写本书的过程中,我们之间出现过各种各样的争论。

其主题通常只有一个:“这种内容能够让读者轻松理解并有所帮助吗?”

我们删除了很多不符合这一标准的内容,然后重新编写更为丰富的内容。就像最近苹果广告中说的:“1 个Yes 需要1000 个No。”编写一本书也需要无数次的自我批评与反省。

著名的软件领域专家、美国计算机名人堂代表人物杰拉尔德• 温伯格在其著作《成为技术领导者》一书中介绍了处理难题时使用的特殊方法,该方法如下。

“如果想学习某个主题,可以先针对这个主题准备授课,向其他人讲授这一课程,并且充分地进行补充学习,然后围绕这一主题写书。”

我是最近才看到杰拉尔德• 温伯格的这句话的,但是我在自己学习的过程中也使用了与此相似的方式。在公司准备授课并进行陈述,然后学习并编写成书。这一过程中可以学到更多内容。

本书中的内容同样如此,我们将学到的内容编写成书,将自己了解的内容以最易于理解的方式整理出来。相信各位阅读本书后一定会觉得有所获益。

感谢

我想感谢编写本书过程中帮助过我的各位朋友。感谢金大佑先生在漫长的编写时间里一直出色地承担着编辑负责人及作者任务、朴宰永先生像大哥一样一直是我的榜样、郑权社长对原稿进行编辑并一同参与完成写作。还要感谢我20 多年的朋友智勋仔细地检查原稿,以及泰然哥给了我这个写作的机会。另外,我还要感谢在我进入LG 电子后手把手悉心指导我的东万哥、成勋哥、朱玉高级研究员、世赫主任、形硕高级研究员,以及我所在团队的所有同伴。正是有了大家的帮助,我才能学到丰富的知识并快速成长。最后,我还要感谢在长时间的写作过程中一直鼓励我、最支持我的(甚至还帮我校订书稿!)亲爱的妻子美丽,以及她肚子里的儿子星星,我爱你们。

目录