前言
Foreword
Android是一款于2007年11月5日宣布基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。根据国际数据公司(IDC)公布的统计数据,在2013年第一季度,Android和iOS系统装机量占到所有智能手机出货量的92.3%。在2014年第一季度,安装Android系统的新智能手机数量跃升至1.621亿部,超过2013年同期的9030万部。这意味着,在运往世界各地的所有新智能手机中,移动操作系统Android的市场占有率已经达到75%,比2012年第一季度的59.1%有显著提高。75%,这是一个具有突出性优势的比重,足以令后面的追赶者汗颜。我们有理由相信,在未来一段时间内,Android依旧牢牢地占据着智能手机操作系统第一的宝座。
市场需求分析
强大的市场占有率造就了更多开发人员关注于这款神奇的系统,同时Android系统的应用者对该系统的功能需求也与日俱增,这也说明应用市场正在渴求着更多的Android开发高手,因此更多稍有基础的Android开发人员需要不断掌握更多的Android关键技术,提升开发功能。
可以说底层驱动开发是通往Android殿堂级高手的必经之路!为了让广大初学者可以对Android系统实现“灵与肉”的感知,而不是停留在原始、抽象的原理和概念之上,本书对Android系统中的底层驱动方面的知识进行了细致的分析,这样做的目的是“提炼”出Android系统埋藏在深处的本质,了解这款神奇的系统究竟是怎样诞生的。并依此为基础,详细讲解了系统移植和驱动开发的基本原理和具体实现。相信阅读完本书,经“细嚼慢咽”并消化之后,您一定会成为殿堂级的Android高手。
本书的内容
本书内容分为三篇,共计24章,循序渐进地讲解了Android系统中底层驱动方面的知识。本书从获取源码和源码结构分析讲起,依次讲解了Android驱动开发基础,获取并编译Android源码,Android驱动移植基础,分析三大内核系统,分析JNI,硬件设备驱动程序,Binder驱动程序,Logger日志驱动,内存系统驱动,分析电源管理模块,分析低内存管理模块,分析物理内存驱动,分析Time Device驱动,分析调试机制驱动Ram Console,分析时钟系统驱动Alarm,分析USB Gadget驱动,FrameBuffer显示系统驱动,输入系统驱动应用,音频系统驱动,视频输出系统驱动,振动器系统驱动,传感器系统驱动,照相机系统,Wi-Fi系统、蓝牙系统和GPS系统等高级知识。本书几乎涵盖了Android源码中的所有主要内容,并且全书内容言简意赅,讲解方法通俗易懂,不但适用于应用高手们,也适合初学者学习并消化。
本书的版本
Android系统自2008年9月发布第一个版本1.1以来,截至2014年6月发布新版本Preview L,一共存在十多个版本。由此可见,Android系统升级频率较快,一年中最少有两个新版本诞生。如果过于追求新版本,就会造成力不从心的结果。在此建议广大读者,不必追求最新的版本,我们只需关注最流行的版本即可。据官方统计,截至2014年3月25日,占据前三位的版本分别是Android 4.3,Android 4.4和Android 4.2,其实这三个版本的区别并不是很大,只是在某个领域的细节上进行了更新。因此,在本书中使用的版本是Android 4.4。
对于Android 4.4来说,对应的Linux内核是3.10,本书将以Linux 3.10和Android 4.4为对象,详细分析Android平台中驱动系统的实现和移植。
本书特色
本书内容丰富全面,分析细致。我们的目标是通过一本图书,提供多本图书的价值,读者可以根据自己的需要有选择地进行阅读。在内容的编写上,本书具有以下特色。
(1)结构合理
从用户的实际需要出发,科学安排知识结构,内容由浅入深,叙述清楚。全书详细地讲解了和Android应用开发有关的源码,内容循序渐进,由浅入深。
(2)遵循“内核分析—驱动实现—JNI层分析—Java应用层—系统移植”这一主线
为了使广大读者彻底弄清楚Android平台中的各个驱动系统,在讲解每一个驱动系统时,都从Linux内核开始讲起,依次剖析了驱动层实现、JNI层分析、Java应用和系统移植改造等内容。遵循了从底层到顶层,实现了驱动系统大揭秘的目标。
(3)易学易懂
本书内容条理清晰、语言简洁,可以帮助读者快速掌握每个知识点。使读者既可以按照本书编排的章节顺序进行学习,也可以根据自己的需求对某一章节进行有针对性的学习。和传统难懂的计算机书籍相比,阅读本书会带来很大的乐趣。
(4)实用性强
本书彻底摒弃枯燥的理论和简单的操作,注重实用性和可操作性,通过简洁的语言和细腻的笔法,详细讲解了各个知识点的基本知识。
(5)内容全面
本书可以号称“内容非常全面的一本Android驱动开发书”,无论是获取源码,还是各个常用、常见的驱动系统,您都能在本书中找到解决问题的答案。
读者对象
● 初学Android编程的自学者;
● Linux开发人员;
● 大中专院校的老师和学生;
● 毕业设计的学生;
● Android编程爱好者;
● 相关培训机构的老师和学员;
● 从事Android开发的程序员。
本团队在编写过程中,得到了中国铁道出版社工作人员的大力支持,特别是荆波编辑的大力支持。正是各位编辑的求实、耐心和高效,才能使得本书在这么短的时间内出版。另外,也十分感谢我的家人,在我写作的时候给予的巨大支持。由于本团队水平有限,如有纰漏和不尽如人意之处在所难免,诚请读者提出意见或建议,以便修订并使之更加完善。
编者
2014年12月