
《Android系统原理及开发要点详解》是2010年1月电子工业出版社出版的图书,作者是韩超,梁泉。
- 书名 Android系统原理及开发要点详解
- 作者 韩超,梁泉
- 出版社 电子工业出版社
- 出版时间 2010年1月1日
- 页数 412 页
内 容 简介
本书全面介绍开放的移动电话平载久大放介回台Android系统,包括Android系统中的Linux驱动、本地框架、Java框架和Java应用4个层次。本书内容以知识性内容为纲,重点关注开发要点,各个部分内容注重相互来自照应,按照清晰的思路向读者介绍整个Android系统的原理和开发方法。

本书按照Android系统360百科的框架和各个子系统的主线,重点介绍开发Android应用程序和构建硬件抽象层。其内容涵盖了Android应用程序开发和Android系统移植构究各雨建手机系统两大方面。
本书既适合从事Android各个层次开发的工程师阅读,也适合通用嵌入式Linux系统的学习者使用。
作者简介
韩超 移动系统开发资深工程师,在Android领域具有完备的知识和前沿的技术,长期从事一线开发工作。韩超是中国大陆地区较早参与Android系统开发的人员之一,也是中国大陆的Androidin(机锋网)开发社区的核心成员和重要组织者之一;也曾经引领大陆各种相紧才构赵友面几务安关技术人员进入Androi运训d领域,并组织参与国内外的相关枝术交流。
前 言
Android 是Google来自历经数年和投资数亿美元开发出来的智能手机系统,Google也发起了围绕Androi360百科d的组织--开放手机联盟,其英文全称为"Open Handset Alliance"。
随着各大移动终端生产商大力开发和生产基于Android的移动智能设备,Android迅速得到业界和社会的认可,并成为整个产业的热点,基于Android平台的各类人才逐渐成为各大企业竞相争夺的焦点。
Android系统是一个封务字拉刚开放的系统,任何公司、个人开发者、爱好者都可以参与其中。对于技术代么德青工作者,Androi外d不仅是一个智能手机的系统,也可以作为学习嵌入阶限矿旧裂减最完字式Linux系统的较完整的软件平台。
Android是一个较新的系统和技术,因此介绍Android的资料和书籍还比较少,尤其简体中文的书籍,相对更少。本书《Android系统原理及开发要点详解》 是一本综合介绍Andr示尼判多怎额括是赵oid系统的书,集合额某减业费送或了Androidin社区多位专家作者的经验,精心编写而成。
Android 作杀起乐修采求进击价所拉为一个庞大的系统,包括了Linux操作系统、各种本地指限盾程序、虚拟机和运行环境、Java框架和Java应用程序多方面的内容。这对于初学者是一个非常大的挑战,因此对于学习、研究进而开发Android系统来说,掌握系统的脉络和使用恰养沙穿坐宁它营什岁根当的学习方法是非常必脱学无队重要的,这也是本书的参裂资安组织主旨。
本书特点
为了适应Android系统的情况,本书在设处征问约滑品众均白求内容的编排和组织上具有以下一些重要特点。
保持完整性和层次性
本书紧紧把握Android系统的4个层次,分章节介绍材投问都,并且有重点地介绍了An围培弦城缩实官缺很载droid整个系统的代码结构、观线根金把编译系统、相关工具、各部分组织等全局性内容。这将让读者即使只花费较短雷己或术部动快坏没万术的时间,也可以获得对Android系统大致的感性理解什突那此老绿。
提供清晰的框架
Android是一个有数百兆大小的较大系统,各部分之间是有机联系的,这就要求Andro受刘很思条职id的学习和开发者需要具有一些软件架构方面的知识。本书为Android整体和重点模块绘制了大量的框图,这样非常有利于帮助读者直观地理解系统。本书在讲述每一个部分时,均列出相关代码的路径,帮助读者对应着进行快速、高效地学习。
抓核心内容
Android系统已经发布了若干个版本:1.0、1.5(cupcake)、1.6(donut)和2.0(eclair),从开发的角度,各个版本在同时使用,这对于学习者是一个较大的挑战。因此本书作者通过把握Android演进中脉络,尽量总结出共性的内容展示给读者。在某些部分,在讲解代码的同时,突出概念性的内容。本书力求通过一本教材,给读者一个长期的、稳定的学习方法和思路。
开发细节
Android 包含众多的软件、程序和工具,涉及软件开发各个方面。在实际的开发过程中,很多内容并不需要开发者去改动。本书从工程的角度出发,偏重开发中常用的内容,对于开发中较少涉及的部分,仅做精炼的大致介绍。本书重点介绍显示机制、输入机制、音频/视频系统的移植层、多媒体系统的构建、电话系统的构建、连接系统的构建、传感器的移值、应用开发中最常涉及的部分,在每段讲解中,穿插了开发中可以使用的一些技巧。
本书内容
本书的各个章节及其组织方式如下所示。
第1章"Android系统概述",概述Android系统方面的内容,包括智能手机平台的发展历程、Android系统的特点、Android的3种开发工作,以及Android的2种不同的开发方式。
第2章"Android系统开发综述",介绍Android系统开发的综述性内容,包括工具使用、获得代码、编译系统、仿真器运行、SDK使用等。
第3章"Android的Linux内核与驱动程序",介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。
第4章"Android的底层库和程序",介绍Android系统的基础程序,以本地程序为主。
第5章"Android的Java虚拟机和Java环境",这是介于本地和Java层之间的相关内容,主要介绍Android的Java虚拟机Dalvik的基本概念、Android Java程序的环境、JNI的使用方法,以及Java框架的启动流程等。
第6章"Android的GUI系统",包括Android GUI系统架构、底层的pixelflinger和libui库、Surface系统、Skia和2D图形系统、Android的OpenGL和3D图形系统等内容。
第7章"Android的Audio系统",主要是音频的输入输出环节,音频系统从驱动程序、本地框架到Java框架都具有内容。
第8章"Android的Video输入输出系统",介绍Android的Video输入输出系统,包括Overlay系统和Camera系统两个部分,前者只有本地的内容,后者各个层次均有内容。
第9章"Android的多媒体系统",介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。
第10章"Android的电话部分",介绍Android系统在电话方面的功能,Android是智能手机系统,电话是其核心部分。
第11章"Android的连接部分",主要包括WiFi、蓝牙及定位系统等,这些Android的连接部分也具有从驱动层到Java应用层的结构。
第12章"Android的传感器系统",传感器系统涉及Android的各个层次,具有完整的结构,相比其他系统,传感器系统的各个层次都比较简单。
第6~12章分模块介绍Android的几个核心系统,主要是本地框架和Java框架方面的内容,兼顾应用程序和驱动层,这是本书的重点。
第13章"Android应用程序概述及框架",介绍Android应用程序层的基本概念和应用程序框架,这部分内容是Android自下而上的第4个层次,可以基于源代码或者SDK开发,它们之间的差别非常小。
第14章"Android应用程序的主要方面",介绍Android应用程序层开发的各个方面,基本上是横向内容,包括应用程序的基本控制、各种UI元素的使用、图形API使用3个方面的内容。
第15章"Android应用程序的设计思想",本章的内容是基于通用的应用程序和GUI程序的通用设计思想,结合Android系统自身的特点,提出一些值得注意的问题和设计方法。
本书读者
本书适应广大的读者群,力求在Android的系统移植、应用程序开发、系统框架改进方面给读者全面的支持。不同的读者在学习本书时,应该使用不同的方法。
Android初级开发者:在本书指引下阅读代码,搭建系统开发环境,对于Android应用程序的开发者,重点关注后3章的内容。
Android中、高级开发者:通过本书的引导,学习系统架构,关注开发要点,并尽量使用手机系统的通用设计思想、软件工程思想、系统工程思想来指导Android系统学习。
嵌入式Linux系统学习者:将Android作为一个集Linux核心和应用层程序于一体的系统进行学习,并可以利用Android的仿真环境运行和调试程序。
读者在学习本书的过程中,应尽量对照本书的框图和手头的Android源代码,这样可以达到事半功倍的效果。本书在重点代码中加上大量的注释,帮助读者阅读,对于非重点的代码,不占用本书的篇幅,读者可以参考开放的源代码。可以采用顺序读和重点读相结合的方式学习本书,顺序读关注系统框架,重点读关注开发要点。
本书作者
本书在编写过程中提炼和综合Android早期开发者的经验、中国大陆Androidin社区的开发成果,以及各位专家的经验和技术,这是本书出版的知识源泉。本书主要由Androidin社区的两名核心技术专家韩超和梁泉领衔规划和编著,韩超统稿。总部设在南加州、专注于Android平台并提供其移动应用开发及解决方案的迈奔无线(mAPPn Inc.)也投入技术和人力参与了本书的工作。
参与本书编写的还有于仕林、张宇、张超等人,赵家维、黄亮、沈桢、徐威特、杨钰等参与了审校工作。
由于时间仓促,可能依然存在一些错误和问题,请读者见谅,欢迎读者讨论和指点。
目 录
第1章 Android系统概述1
1.1 基础知识1
1.1.1 Android开发系统的由来1
1.1.2 移动电话系统开发模式2
1.1.3 未来移动电话的功能及Android的优势4
1.2 Android的开发工作6
1.2.1 Android移植开发6
1.2.2 Android应用开发8
1.2.3 Android系统开发9
1.3 Android的SDK与源代码10
1.3.1 基于SDK的Android开发10
1.3.2 基于源代码SDK Android开发11
第2章 Android系统开发综述13
2.1 Android的系统架构13
2.1.1 软件结构13
2.1.2 Android的工具16
2.2 Android源代码的开发环境18
2.2.1 Android源代码的获取和提交18
2.2.2 Android源代码结构21
2.2.3 编译24
2.2.4 系统的运行25
2.3 Android SDK的开发环境32
2.3.1 SDK的结构32
2.3.2 Windows环境SDK开发33
2.3.3 Linux环境SDK开发42
第3章 Android的Linux内核与驱动程序44
3.1 Linux核心与驱动44
3.2 Android专用驱动45
3.2.1 Ashmem45
3.2.2 Binder45
3.2.3 Logger46
3.3 Android使用的设备驱动46
3.3.1 Framebuffer显示驱动46
3.3.2 Event输入设备驱动48
3.3.3 v4l2摄像头--视频驱动50
3.3.4 OSS音频驱动53
3.3.5 ALSA音频驱动54
3.3.6 MTD驱动56
3.3.7 蓝牙驱动57
3.3.8 Wlan驱动58
第4章 Android的底层库和程序60
4.1 底层库和程序的结构60
4.1.1 本地实现的基本结构60
4.1.2 增加本地程序和库的方法61
4.2 标准C/C++库bionic64
4.3 C语言工具库libcutils65
4.4 init可执行程序66
4.5 Shell工具72
4.6 C++工具库libutils75
4.6.1 libutils的基本内容75
4.6.2 Binder76
4.6.3 libutils中的其他内容82
4.7 Android的系统进程85
4.7.1 servicemanager85
4.7.2 zygote87
第5章 Android的Java虚拟机和Java环境88
5.1 Dalvik虚拟机和核心库88
5.1.1 dex工具库和虚拟机的实现89
5.1.2 核心库90
5.1.3 nativehelper库91
5.2 Android的Java程序环境91
5.2.1 Java类的层次结构91
5.2.2 Android Java类的代码92
5.2.3 Android系统API92
5.3 JNI的使用96
5.3.1 JNI的架构和实现方式97
5.3.2 JNI的实现方式97
5.3.3 在应用程序中使用JNI99
5.4 系统服务的Java部分101
5.4.1 Binder102
5.4.2 ServiceManager103
5.4.3 系统进程103
第6章 Android的GUI系统106
6.1 Android GUI系统综述106
6.2 pixelflinger和libui库108
6.2.1 pixelflinger108
6.2.2 libui108
6.2.3 输出/输入与硬件的接口109
6.3 Surface系统113
6.3.1 Surface系统本地接口113
6.3.2 SurfaceFlinger本地代码115
6.3.3 Surface的Java和JNI代码119
6.4 Skia和2D图形系统121
6.4.1 Skia底层库121
6.4.2 Android图形系统的JNI接口124
6.4.3 Android的图形包(graphics)125
6.5 Android的OpenGL系统与3D图形系统125
6.5.1 OpenGL的本地代码125
6.5.2 OpenGL的JNI代码130
6.5.3 OpenGL的Java类130
第7章 Android的Audio系统132
7.1 Audio系统综述132
7.2 Audio系统和上层接口134
7.2.1 Audio系统的各个层次134
7.2.2 media库中的Audio框架部分135
7.2.3 AudioFlinger本地代码138
7.2.4 Audio系统的JNI代码140
7.2.5 Audio系统的Java代码142
7.3 Audio的硬件抽象层142
7.3.1 Audio硬件抽象层的接口定义142
7.3.2 AudioFlinger中自带Audio硬件抽象层实现144
7.3.3 Audio硬件抽象层的真正实现150
第8章 Android的Video输入输出系统151
8.1 Video输入输出系统综述151
8.1.1 Android的Overlay系统结构152
8.1.2 Android的Camera系统结构153
8.2 Overlay系统155
8.2.1 Overlay系统的框架部分定义156
8.2.2 SurfaceFlinger系统的Overlay部分158
8.3 Overlay的硬件抽象层161
8.3.1 Overlay系统硬件抽象层的接口161
8.3.2 Overlay系统硬件实现框架164
8.3.3 Overlay系统硬件实现的注意事项166
8.4 Camera系统与上层接口169
8.4.1 Camera本地代码框架169
8.4.2 CameraService176
8.4.3 Camera的JNI代码179
8.4.4 Camera的Java代码182
8.5 Camera的硬件抽象层182
8.5.1 Camera硬件抽象层的接口定义182
8.5.2 Camera硬件抽象层的桩实现184
8.5.3 Camera硬件抽象层的硬件实现188
第9章 Android的多媒体系统190
9.1 Android多媒体系统的结构和业务190
9.1.1 多媒体系统的宏观结构190
9.1.2 多媒体的各种业务192
9.2 多媒体系统的各个层次199
9.2.1 libmedia的框架部分199
9.2.2 多媒体服务208
9.2.3 多媒体部分的JNI代码213
9.2.4 多媒体部分的Java框架代码215
9.2.5 android.widget.VideoView类216
9.3 多媒体实现的核心部分OpenCore216
9.3.1 OpenCore概述216
9.3.2 OpenCore的层次结构217
9.3.3 OpenCore的OSCL部分219
9.3.4 OpenCore的文件格式和编解码部分221
9.3.5 OpenCore 的Node222
9.3.6 OpenCore 的功能扩展223
9.3.7 OpenCore的 Player226
9.3.8 OpenCore 的Author236
第10章 Android的电话部分243
10.1 Android电话部分综述243
10.2 Modem驱动243
10.3 本地的RIL代码245
10.3.1 简介245
10.3.2 RILD守护进程246
10.3.3 libril库247
10.3.4 RIL的实现库Reference RIL247
10.3.5 Request(请求)流程248
10.3.6 Response(响应)流程249
10.3.7 RIL的移植工作251
10.4 Java框架及应用251
10.4.1 基本架构252
10.4.2 呼叫255
10.4.3 短信256
10.4.4 数据连接257
10.4.5 其他框架部分及其他应用258
第11章 Android的连接部分259
11.1 WiFi部分259
11.1.1 WiFi基本架构259
11.1.2 WiFi本地实现260
11.1.3 WiFi的Java和JNI263
11.1.4 Settings中的WiFi设置265
11.1.5 WiFi工作流程实例265
11.2 蓝牙部分267
11.2.1 蓝牙基本架构268
11.2.2 蓝牙用户空间库bluez269
11.2.3 bluez适配层272
11.2.4 蓝牙的JNI和Java部分272
11.3 GPS和定位部分280
11.3.1 定位系统基本架构281
11.3.2 定位系统驱动层281
11.3.3 GPS本地实现282
11.3.4 GPS JNI实现283
11.3.5 定位系统Java实现284
第12章 Android的传感器系统286
12.1 传感器系统综述286
12.2 传感器系统层次结构288
12.2.1 传感器系统的各个层次288
12.2.2 传感器系统的JNI288
12.2.3 传感器系统的Java代码290
12.3 传感器系统的硬件抽象层291
12.3.1 传感器系统硬件抽象层的接口定义291
12.3.2 传感器系统硬件抽象层的示例实现293
12.3.3 传感器系统硬件抽象层的实现要点296
12.4 Sensor的使用296
第13章 Android应用程序概述及框架299
13.1 Android应用程序的开发方式299
13.2 Android应用程序的内容300
13.2.1 Android应用程序的概念性描述300
13.2.2 应用程序包含的各个文件305
13.2.3 使用am工具启动Android应用程序306
13.3 Android应用程序示例308
13.3.1 HelloActivity程序308
13.3.2 HelloActivity的源代码结构308
13.3.3 HelloActivity的编译结构(源代码开发)312
13.3.4 HelloActivity的编译结构(SDK开发)314
13.4 Android 应用层API参考文档315
第14章 Android应用程序的主要方面317
14.1 应用的基本控制318
14.1.1 UI元素及其控制318
14.1.2 屏幕间的跳转320
14.1.3 弹出对话框和菜单324
14.1.4 样式的设置328
14.1.5 使用服务331
14.1.6 使用广播接收器337
14.2 各种UI元素的使用339
14.2.1 基本的UI元素340
14.2.2 视图组的使用345
14.2.3 自定义的视图353
14.2.4 滚动视图的使用354
14.2.5 布局(Layout)355
14.2.6 网格(Grid)视图组359
14.2.7 列表(List)视图组360
14.2.8 使用Tab362
14.3 图形API的使用363
14.3.1 2D图形的API363
14.3.2 3D图形的API366
第15章 Android应用程序的设计思想369
15.1 Android程序思想369
15.1.1 Java 源程序思想369
15.1.2 资源的思想373
15.1.3 工程描述文件的思想375
15.1.4 三位一体的思想376
15.1.5 安全性和权限378
15.1.6 App Widget的使用379
15.2 Android应用开发实例381
15.2.1 GUI依赖类的程序382
15.2.2 单独模块类程序387
15.3 Android的设计理念393
评论留言