《Android系统原理及开发要点详解》全面介绍开放的移动电话平台Android系统,包括Android系统中的Linux驱动、本地框架、Java框架和Java应用4个层次。《Android系统原理及开发要点详解》内容以知识性内容为纲,重点关注开发要点,各个部分内容注重相互照应,按照清晰的思路向读者介绍整个Android系统的原理和开发方法。
《Android系统原理及开发要点详解》按照Android系统的框架和各个子系统的主线,重点介绍开发Android应用程序和构建硬件抽象层。其内容涵盖了Android应用程序开发和Android系统移植构建手机系统两大方面。
《Android系统原理及开发要点详解》豆瓣网友评价
作为一位系统工程师,我手头上最常翻的书是《Understanding the Linux Kernel》。如果寻找一本Android系统的工具书,或者寻找一本能介绍Android框架的工具书,我推荐这一本。
虽然现在Android的书不多(大部分是跟开发app相关,介绍框架的真的是凤毛麟角),而且这本书基于的源码也不是最新的——不是1.5就是1.6——但框架方面的原理是不会变的,所以在研究框架时还是有借鉴意义的。
需要说明的是,Android系统是个复杂的系统,不要指望这本书能像《Understanding the Linux Kernel》一样把系统讲解的那么透彻,我更愿意把这本书比作一张迷宫的手工绘制版地图,读者需要自己去探索,当你不知道该往哪走的时候,翻翻这本书,说不定会有惊奇的发现。
《Android系统原理及开发要点详解》前言
Android 是Google历经数年和投资数亿美元开发出来的智能手机系统,Google也发起了围绕Android的组织——开放手机联盟,其英文全称为“Open Handset Alliance”。
随着各大移动终端生产商大力开发和生产基于Android的移动智能设备,Android迅速得到业界和社会的认可,并成为整个产业的热点,基于Android平台的各类人才逐渐成为各大企业竞相争夺的焦点。
Android系统是一个开放的系统,任何公司、个人开发者、爱好者都可以参与其中。对于技术工作者,Android不仅是一个智能手机的系统,也可以作为学习嵌入式Linux系统的较完整的软件平台。
Android是一个较新的系统和技术,因此介绍Android的资料和书籍还比较少,尤其简体中文的书籍,相对更少。本书《Android系统原理及开发要点详解》是一本综合介绍Android系统的书,集合了Androidin社区多位专家作者的经验,精心编写而成。
Android 作为一个庞大的系统,包括了Linux操作系统、各种本地程序、虚拟机和运行环境、Java框架和Java应用程序多方面的内容。这对于初学者是一个非常大的挑战,因此对于学习、研究进而开发Android系统来说,掌握系统的脉络和使用恰当的学习方法是非常重要的,这也是本书的组织主旨。
本书特点
为了适应Android系统的情况,本书在内容的编排和组织上具有以下一些重要特点。
保持完整性和层次性
本书紧紧把握Android系统的4个层次,分章节介绍,并且有重点地介绍了Android整个系统的代码结构、编译系统、相关工具、各部分组织等全局性内容。这将让读者即使只花费较短的时间,也可以获得对Android系统大致的感性理解。
提供清晰的框架
Android是一个有数百兆大小的较大系统,各部分之间是有机联系的,这就要求Android的学习和开发者需要具有一些软件架构方面的知识。本书为Android整体和重点模块绘制了大量的框图,这样非常有利于帮助读者直观地理解系统。本书在讲述每一个部分时,均列出相关代码的路径,帮助读者对应着进行快速、高效地学习。
《Android系统原理及开发要点详解》精彩书摘
在这种半开放式的移动电话开发中,厂商依然依靠制造移动电话出售作为主要的盈利模式,但是增加了第三方开发移动电话程序的机会。例如,很多现有的移动电话系统开始支持让用户自己下载和安装程序。例如,J2ME技术以及苹果公司的iPhone可以开发第三方应用,并可以在AppStore(iPhone/iPodtouch的网上软件商店)进行交易。
在这种模式中,需要移动电话厂商支持开放的接口,为第三方应用程序提供在它们的移动电话上运行的可能。这样,移动电话厂商和第三方应用的制作者就可以形成一个互相促进的关系:一方面,第三方应用的制作者可以像开发通常软件一样,开发移动电话应用,获得一定的利润;另一方面,由于具有了众多第三方应用,移动电话也具有了更强大的竞争力,这也促使移动电话的制作厂商倾向于支持第三方应用的移动电话。
上面所说的移动电话的开放模式,还只能说是一种半开放的开发模式,因为在这种开放模式中,第三方应用的接口是开放的,但是移动电话系统本身的开发并不是开放的。
Android的出现,构建了一种新型的移动电话开发模式,这就是一种全开放的移动电话开发模式。Android移动电话不但可以使用第三方应用,而且移动电话系统本身也是开放的,在这种开发模式下:
各厂商在统一开放的平台上开发移动电话:
第三方开发移动电话应用。
Google的Android系统是一个完全开放的系统,也是一个完整的生态系统,它分成了三个有机的组成部分:
Android源代码工程(Android OpenSource Project)。
Android开发者(Android Developer):
Android市场(Android Market)。
《Android系统原理及开发要点详解》价格
《Android系统原理及开发要点详解》目录
第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 Ashmem 45
3.2.2 Binder 45
3.2.3 Logger 46
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++库bionic 64
4.3 C语言工具库libcutils 65
4.4 init可执行程序 66
4.5 Shell工具 72
4.6 C++工具库libutils 75
4.6.1 libutils的基本内容 75
4.6.2 Binder 76
4.6.3 libutils中的其他内容 82
4.7 Android的系统进程 85
4.7.1 servicemanager 85
4.7.2 zygote 87
第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系统API 92
5.3 JNI的使用 96
5.3.1 JNI的架构和实现方式 97
5.3.2 JNI的实现方式 97
5.3.3 在应用程序中使用JNI 99
5.4 系统服务的Java部分 101
5.4.1 Binder 102
5.4.2 ServiceManager 103
5.4.3 系统进程 103
第6章 Android的GUI系统 106
6.1 Android GUI系统综述 106
6.2 pixelflinger和libui库 108
6.2.1 pixelflinger 108
6.2.2 libui 108
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 CameraService 176
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 多媒体实现的核心部分OpenCore 216
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 的Node 222
9.3.6 OpenCore 的功能扩展 223
9.3.7 OpenCore的 Player 226
9.3.8 OpenCore 的Author 236
第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 RIL 247
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和JNI 263
11.1.4 Settings中的WiFi设置 265
11.1.5 WiFi工作流程实例 265
11.2 蓝牙部分 267
11.2.1 蓝牙基本架构 268
11.2.2 蓝牙用户空间库bluez 269
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 传感器系统的JNI 288
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 使用Tab 362
14.3 图形API的使用 363
14.3.1 2D图形的API 363
14.3.2 3D图形的API 366
第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
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。