前言
为什么要写这本书
开源软件在很多年前就存在了,不过自从Google公司发布开源的Android以来,好像突然关A注这个开源系统的人多了起来。而且与其他开源系统不同,很多Android的关注者不但使用ndroid,还不断对Android“动手动脚”。这些人通过不断修改Android源代码的各个部分,制作出了很多Android的衍生版本,也就是我们经常说的ROM。
就目前而言,无论国外,还是国内;无论大企业,还是小公司,甚至是小团队和个人,都在疯狂地制作各种类型的ROM。例如,有一定规模的CM(Cyanogenmod)ROM、HTC ROM、三星ROM等;还有国内的小米ROM(MIUI ROM)、点心ROM、乐蛙ROM,当然还有赶鸭子上架的老罗ROM(更准确地说应该是锤子ROM)。这些ROM各有特色,很难说哪个更有优势。
既然有这么多ROM,可能很多搞Android开发的程序员按耐不住了。因为对于从没搞过ROM或对ROM一知半解的程序员来说,ROM往往显得很神秘,而且很高深。所以,这些好奇的程序员中的绝大多数都曾想满足一下自己的好奇心,制作一款完全属于自己的ROM(强烈的好奇心和求知欲望是人类的高贵品质,程序员尤为如此)。当然,部分想尝试做ROM的程序员还听说这类工作的薪水比较高,而且好找工作,这也许是很多程序员想学习做ROM的另外一个原因吧!不过在心动到行动的过程中,会发现从网上收集到的制作ROM的资料都是零散的,有些甚至是错误的,而且非常不系统。所以,这些想进入ROM世界的程序员再一次进入迷茫状态。
如果手捧本书的您正在读这段前言,说明迷茫状态快要结束了!为了满足有志于制作ROM的程序员们的好奇心。笔者特意编写了本书。意在系统地阐述如何从Android源代码制作一个完整的ROM,以及各种刷机技术。井且可以更深层次地定制ROM。例如,修改Android Home应用Launcher2,使其更符合自己的苛刻要求。
本书的内容
通常定制ROM分为应用层和底层(主要指驱动层),不过,由于大多数ROM是基于CM ROM的,而CM ROM已经将底层的驱动适配得非常好了,支持目前大多数主流机型。而且由于国内大多数第三方的ROM井没有自己适配底层驱动,所以,本书将把主要精力放在定制应用层上。
关于应用层的定制通常分为Android系统应用和Framework。前者主要指直接面向用户的Android应用,例如,Home应用(Launcher2)短信管理系统设置等。而后者主要面对程序员群体。例如,为ROM增加某些特有的API,以及修改原有的API,使其满足某些特殊的要求。由于篇幅所限。本书将主要讨论Android系统应用的定制。在《Android深度探索》系列的后续著作中会继续讨论Framework的定制。
本书分为如下两部分。
(1)Android ROM的制作和刷机(第1章~第5章)。
(2)Android系统应用源代码分析和定制(第6章~第15章)。
其中第一部分主要包括如下几个方面。
(1)开发环境搭建以及Android源代码(官方Android源代码和CM Android源代码)和Linux内核源代码的下载和编译。
(2)Bootloader和Recovery ROM的制作和刷机。
(3)提取Root权限的原理和实践(包括am命令详解、Superuser和su的源代码分析等)。
(4)ROM包含的各种镜像(system.img、boot.img、recovery.img等)的修改、制作和刷机技巧。这里的制作主要指从Android源代码制作。
(5)Recovery ROM的核心:Edify语言。
(6)集成第三方的APK程序(包括Google Services Framework和Google Play)。
(7)Recovery的原理和定制(包括为Recovery增加新功能,汉化Recovery等)。
第二部分主要包括如下内容。
(1)如何开发和测试Android系统应用。
(2)Android应用程序的安装、卸载原理和PackageInstaller代码分析。
(3)系统设置的各种功能的实现原理和源代码分析。
(4)系统内容提供者的源代码分析。
(5)电话与联系人的实现原理和源代码分析。
(6)短信与彩信管理的实现原理和源代码分析。
(7)Android Home应用(Launcher2)的实现原理和源代码分析。
(8)近场通信(NFC)后端服务程序的实现原理和源代码分析。
要注意的是,本书将以CM 10.1(Android 4.x)源代码作为基础进行讲解。
本书的特点
(1)系统地阐述了Android ROM的制作和刷机过程。
(2)全书使用较新的CM10.1(Android 4.x)。
(3)完全采用Ubuntu Linux12.04 LTS作为实验环境
(4)分析了Android中主要的系统应用的实现原理和源代码,使读者充分掌握定制Android系统应用的方法。
(5)分析了制作ROM过程中涉及的核心技术的实现原理,例如,Root权限的提取、Recovery定制等。使读者可以制作出更酷的Android ROM。
(6)由于本书分析了大量的源代码,所以,还详细介绍了分析源代码的工具和一些技巧。
读者对象
□ 从事Android应用开发,但想进入Android底层开发领域的程序员。
□ 对定制Android ROM感兴趣的程序员。
□ 想进一步提高Android底层开发技术和实践能力的程序员。
□ 开设Android底层开发课程的大专院校和培训机构。
□ 想成为Geek(极客),但苦于没有人指导的Android爱好者。
源代码和工具下载
读者可以到http://pan.baidu.com/s/19UeDO下载CM10.1(Android 4.x)的源代码。本书涉及的其他源代码和工具都可以在随书光盘中找到。另外可以到http://blog.csdn.net/nokiaguy下载光盘中的内容。
相关的视频课程为:http://edu.51cto.com/lecturer/user_id-974126.html。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如有问题或建议,请发送至techcast@126.com或在新浪微博(http://weibo.com/638012593)上留言。非常期待能够得到你们的真挚反馈。编辑联系邮箱:zhangtao@ptpress.com.cn。
致谢
感谢所有在本书写作过程中给予我指导、帮助和鼓励的朋友,尤其是人民邮电出版社的编辑张涛,不仅对本书提出了宝贵的写作建议,而且还对本书进行了仔细的审阅。
感谢一直以来信任、鼓励、支持我的家人和朋友。
感谢eoeandroid、移动开发者社区的朋友对我技术上的帮助。
谨以此书献给我最亲爱的家人,以及众多热爱Android的朋友们!
编者