目 录
第 一部分 Android应用程序开发
第 1章 Android开发环境 2
1.1 初识庐山真面目——Android开发环境概述 2
1.2 Android开发系统环境要求 2
1.2.1 操作系统配置 2
1.2.2 开发环境配置要求 2
1.3 Android开发所需软件的下载 3
1.3.1 Elcipse 3
1.3.2 ADT 3
1.3.3 Android SDK 3
1.4 Android SDK开发环境配置 9
1.4.1 安装已下载的软件 9
1.4.2 本地安装ADT 10
1.4.3 网络安装ADT 14
1.4.4 创建AVD 15
1.4.5 新建工程HelloWorld 18
1.4.6 运行Android工程 20
1.5 Android NDK开发环境搭建 22
1.5.1 Android NDK简介 22
1.5.2 开发环境配置 23
1.5.3 NDK的实例开发 28
1.6 小结 32
第 2章 Android基本应用开发与解析 33
2.1 应用程序结构 33
2.1.1 应用程序目录结构 33
2.1.2 知其然,知其所以然——Hello Wrold程序结构讲解 35
2.2 Android资源系统(Android resource system) 37
2.2.1 资源系统中的基本概念 37
2.2.2 Android资源系统引用 39
2.3 Android布局 46
2.3.1 线性布局(LinearLayout) 46
2.3.2 相对布局(RelativeLayout) 50
2.3.3 帧布局(FrameLayout) 52
2.3.4 表格布局(TableLayout) 53
2.3.5 绝对布局(AbsoluteLayout) 55
2.4 Android ViewGroup 56
2.4.1 TabWidget和TabHost 57
2.4.2 TabWidget和TabHost的应用 57
2.4.3 ListView(列表示图) 60
2.4.4 实现九宫图首选——GridView 64
2.5 Android View(示图) 66
2.5.1 文本框(TextView) 66
2.5.2 AutoCompleteTextView 69
2.5.3 编辑框(EditText) 70
2.5.4 下拉列表(Spinner) 74
2.5.5 拖动条(SeekBar) 75
2.5.6 评分条(RatingBar) 77
2.5.7 按钮(Button) 79
2.5.8 图片按钮(ImageButton) 80
2.5.9 图片框(ImageView) 82
2.5.10 画廊(Gallery) 82
2.6 Android UI事件处理 85
2.6.1 Android UI概述 85
2.6.2 事件监听器和事件处理 85
2.6.3 监听器和事件处理实例 86
2.7 小结 88
第3章 Android应用程序清单 89
3.1 应用程序结构 89
3.1.1 Manifest文件作用 89
3.1.2 元素顺序问题 90
3.1.3 AndroidManifest.xml的功能介绍 90
3.1.4 AndroidManifest.xml的结构和规则 90
3.1.5 结合实例综述说明 91
3.2 Manifest文件结构 92
3.3 Manifest文件中各个元素及属性介绍 92
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6 97
3.3.7
3.3.8
3.3.9
3.3.10
3.3.11
3.3.12
3.3.13
3.3.14
3.3.15
3.3.16
3.3.17
3.3.18
3.3.19
3.3.20
3.3.21
3.3.22
3.3.23
3.3.24
3.4 Android permission列表 110
3.5 小结 114
第4章 Androidr的4大组件 115
4.1 Activity简介和应用实例 115
4.1.1 Activity简介 115
4.1.2 Activity的生命周期 115
4.1.3 Actvity堆栈(Stack) 117
4.1.4 Activity使用实例 118
4.1.5 多个Activity之间的数据传递 119
4.1.6 Actvity的生命周期实例 122
4.2 服务(Service)应用 122
4.2.1 Service概念及使用实例 122
4.2.2 Service的生命周期 123
4.2.3 Service与Activity通信 125
4.2.4 Service与Activity通信实例 125
4.3 存储与访问 131
4.3.1 文件进行数据存储 131
4.3.2 SharedPreferences 134
4.3.3 使用SQLite数据库存储数据 137
4.3.4 内容提供器——Content provider 142
4.4 广播(Broadcast)与接收(Receiver) 147
4.4.1 概述 147
4.4.2 广播的生命周期 147
4.4.3 广播实例 147
4.5 小结 149
第5章 Android应用层通信机制 150
5.1 Intent通信机制 150
5.1.1 Intent概述 150
5.1.2 Intent对象 151
5.1.3 Intent数据传递Bundle 153
5.1.4 Intent过滤器——Intent filters 153
5.1.5 一般案例 157
5.1.6 如何利用Intent来匹配 157
5.1.7 Intent的实例 158
5.2 Handler消息通信机制 158
5.2.1 Handler机制概述 158
5.2.2 Handler发送消息的方法列表 159
5.2.3 Handler实例 159
5.3 小结 161
第6章 综合案例——多线程下载器开发 162
6.1 多线程下载概述 162
6.2 Android多线程下载 162
6.3 小结 169
第7章 Android应用程序设计与优化 170
7.1 UI设计 170
7.2 性能设计 171
7.3 针对响应的设计 174
7.4 无缝性设计 177
7.5 小结 180
第 二部分 Android调试技术与编译系统
第8章 Android工具介绍 182
8.1 模拟器Emulator命令 182
8.2 Android模拟器 199
8.2.1 启动和关闭模拟器 199
8.2.2 操作模拟器 199
8.2.3 模拟器启动选项 200
8.2.4 使用模拟器控制台 200
8.2.5 使用模拟器皮肤 203
8.2.6 运行多个模拟器实例 204
8.2.7 在模拟器上安装应用程序 204
8.2.8 SD卡模拟 204
8.2.9 故障排除 205
8.2.10 模拟器的限制 205
8.3 adb 206
8.3.1 发出adb命令 206
8.3.2 查询模拟器/设备 207
8.3.3 向特定的模拟器/设备发送命令 207
8.3.4 安装软件 208
8.3.5 转发端口 208
8.3.6 从模拟器/设备中导入导出文件 208
8.3.7 adb命令列表 208
8.3.8 启动shell命令 210
8.3.9 启动logcat 210
8.4 ADT插件 213
8.5 Android虚拟设备 213
8.5.1 界面方式 214
8.5.2 命令行方式 215
8.6 设计用户界面利器——Hierarchy Viewer 216
8.7 layoutopt 219
8.8 Draw 9-patch 220
8.9 调试工具——DDMS 220
8.9.1 DDMS工作原理 220
8.9.2 启动DDMS 221
8.9.3 DDMS功能 222
8.10 资源打包工具——aapt 227
8.11 IDL语言——aidl 227
8.11.1 用aidl实现IPC 228
8.11.2 调用的IPC方法 232
8.12 sqlite3 236
8.13 Traceview 236
8.13.1 创建Trace文件 236
8.13.2 将Trace文件复制到主机 237
8.13.3 使用Traceview查看跟踪文件 237
8.13.4 Traceview文件格式 238
8.13.5 Traceview Known Issues 240
8.13.6 dmtracedump用法 240
8.14 mksdcard 241
8.15 bat脚本——dx 242
8.16 压力测试工具——Monkey 243
8.16.1 Monkey简介 243
8.16.2 Monkey的基本用法 243
8.16.3 命令选项详解 244
8.16.4 实例 245
8.17 android工具 246
8.18 优化APK新工具——zipalign 246
8.19 小结 247
第9章 调试技术 248
9.1 Android应用程序调试 248
9.1.1 日志式调试 248
9.1.2 Eclipse调试 249
9.1.3 TraceView跟踪 250
9.1.4 单元测试(JUNIT) 252
9.2 Web应用程序调试 264
9.2.1 在Android浏览器中用控制台API 264
9.2.2 在WebView中用控制台API 265
9.3 NDK调试 265
9.3.1 日志式调试 266
9.3.2 ndk-gdb调试 266
9.4 系统源代码调试 270
9.4.1 编译Android源代码 270
9.4.2 导入Android源代码工程 270
9.4.3 调试程序 272
9.4.4 调试说明 275
9.5 Android程序调试原理 275
9.6 小结 276
第 10章 Android编译系统 277
10.1 Android编译系统概述 277
10.2 编译系统入口 278
10.3 Makefile文件 278
10.3.1 理解Makefile文件 278
10.3.2 简单APK的Makefile 279
10.3.3 使用jar文件的APK的Makefile文件 280
10.3.4 平台密钥签名的APK的Makefile文件 280
10.3.5 特定厂商签名的APK的Makefile文件 280
10.3.6 增加已编译好的APK的Makefile文件 281
10.3.7 增加静态Java库 281
10.4 编译层次结构 282
10.5 配置新产品的Makefile 282
10.5.1 配置步骤 282
10.5.2 新产品的文件结构树 284
10.5.3 产品定义文件 284
10.6 编译系统的结构 286
10.7 小结 287
第 11章 Android系统编译环境搭建 288
11.1 系统要求 288
11.2 安装工具 288
11.3 获取源代码 289
11.4 编译源代码 290
11.5 模块编译 292
11.6 编译Android内核 293
11.7 编译问题 295
11.7.1 Git工具详解 295
11.7.2 repo工具详解 297
11.7.3 32位操作系统无法编译问题 298
11.7.4 JDK版本 298
11.7.5 arm-eabi-4.4.3版本问题 299
11.7.6 libOpenSLES.so问题 299
11.7.7 libclearsilver-jni.so问题 300
11.7.8 LOCAL_MODULE_TAGS问题 300
11.8 小结 300
第 12章 NDK开发 302
12.1 NDK开发概述 302
12.2 Android.mk语法规范 303
12.2.1 NDK提供的变量 304
12.2.2 NDK提供的宏 305
12.2.3 NDK模块描述变量 306
12.3 Application.mk语法规范 310
12.4 导入模块功能 312
12.4.1 NDK_MODULE_PATH变量 312
12.4.2 编写导入模块 313
12.4.3 命名导入模块 313
12.4.4 一些建议 314
12.5 NDK预编译功能 315
12.5.1 声明预编译库模块 315
12.5.2 引用预编译模块 315
12.5.3 导出预编译模块的头文件 316
12.5.4 调试预编译模块 316
12.5.5 预编译模块的ABI 316
12.6 NDK编译工具ndk-build 317
12.7 NDK调试工具ndk-gdb 318
12.8 小结 321
第三部分 Android子系统分析
第 13章 Android系统架构 324
13.1 Android概念 324
13.2 Android平台特性 324
13.3 Android架构 325
13.3.1 Android应用程序层 325
13.3.2 Android应用程序框架层 325
13.3.3 Android程序库 326
13.3.4 Android运行时库 326
13.3.5 Linux内核 327
13.4 Android版本演化 327
13.5 小结 329
第 14章 系统服务模型 330
14.1 系统服务模型概述 330
14.2 Android系统服务启动过程 332
14.3 Android系统服务注册 334
14.4 Android系统服务请求 335
14.5 小结 335
第 15章 Android启动过程 336
15.1 Android初始化语言 336
15.1.1 Actions(行动) 336
15.1.2 Services(服务) 337
15.1.3 Options(选项) 337
15.1.4 Triggers(触发器) 337
15.1.5 Commands(命令) 338
15.1.6 Properties(属性) 339
15.1.7 iniot.conf实例 339
15.1.8 Android调试记录 340
15.2 Android启动过程 341
15.2.1 Android概述 341
15.2.2 Android启动过程 341
15.2.3 init.rc文件解析过程 345
15.3 小结 353
第 16章 图形系统 354
16.1 图形系统概述 354
16.2 驱动程序接口之一——Framebuffer分析 354
16.3 OpenGL ES分析 355
16.4 Skia图形库分析 357
16.5 SurfaceFlinger服务 358
16.6 Surface显示过程 360
16.7 小结 364
第 17章 蓝牙系统 365
17.1 蓝牙系统概述 365
17.2 蓝牙系统架构 365
17.3 蓝牙系统源代码分析 366
17.3.1 蓝牙服务的启动和关闭 366
17.3.2 蓝牙系统与蓝牙耳机的连接 369
17.4 移植和编译 371
17.4.1 移植 371
17.4.2 编译 371
17.4.3 遇到的问题 372
17.4.4 工具 372
17.5 蓝牙新特性 372
17.6 小结 374
第 18章 电话系统 375
18.1 电话系统概述 375
18.2 Android无线接口层 376
18.2.1 Android无线接口总述 376
18.2.2 RIL初始化 377
18.2.3 RIL交互 377
18.2.4 RIL实现 379
18.3 GSM驱动模块 381
18.3.1 GSM基本架构及初始化 381
18.3.2 请求流程 383
18.3.3 响应流程 385
18.4 电话和短信 387
18.5 小结 388
第 19章 多媒体系统 389
19.1 多媒体概述 389
19.2 多媒体系统架构 389
19.3 多媒体系统源代码分析 390
19.3.1 系统共享库架构及关系 390
19.3.2 系统框架重要头文件 392
19.3.3 MediaPlayer分析 394
19.4 OpenCore概述 399
19.5 小结 400
第 20章 Binder通信机制 401
20.1 Binder通信机制概述 401
20.2 Binder通信机制工作原理 402
20.2.1 Binder组织结构 402
20.2.2 Binder通信时序 402
20.2.3 Binder类继承关系 404
20.3 Binder源代码分析 405
20.3.1 Binder源代码文件及其解析 405
20.3.2 源代码分析 408
20.4 小结 419
第 21章 电源管理 420
21.1 电源管理概述 420
21.2 电源管理源代码分析 422
21.3 系统休眠与唤醒源代码分析 423
21.4 小结 426
第四部分 Android系统改造实战
第 22章 StatusBar改造 428
22.1 StatusBar概述 428
22.2 自定义StatusBar图标 428
22.2.1 制作图标 428
22.2.2 布局选择文件 428
22.2.3 修改布局文件 429
22.3 修改Status Bar图标默认值 429
22.4 增加触摸事件 430
22.5 小结 432
第 23章 开机动画改造 433
23.1 开机动画概述 433
23.2 开机图片 434
23.3 开机文字 434
23.4 开机动画 435
23.5 开机动画定制 437
23.5.1 制作initlogo.rle 437
23.5.2 修改开机文字 438
23.5.3 制作开机动画bootanimation 440
23.6 小结 441
第 24章 系统服务改造指南 442
24.1 自定义Native服务 442
24.1.1 自定义服务 442
24.1.2 注册服务 444
24.1.3 调用服务 445
24.1.4 运行测试 446
24.2 自定义Android服务 447
24.2.1 自定义服务 447
24.2.2 注册服务 449
24.2.3 调用服务 450
24.2.4 运行测试 450
24.3 小结 451
第 25章 构建自己的系统应用 452
25.1 系统应用的概述 452
25.2 编写系统应用 452
25.3 模块化编译系统应用 453
25.4 运行系统应用 453
25.5 小结 454