内容简介
本书共分25章,对Android系统的各个层面进行了详细讲解,旨在让读者在尽量短的时间内对Andriod系统的各个方面有一个全面的了解,为进一步学习开发和研究Android操作系统源程序打下坚实的基础。首先,在Android应用程序层面,详细讲解了应用程序开发的各项技术,着重讲解了应用程序的开发基础、应用程序的结构、4大组件工作原理与功能,以及它们之间通信的基础Intent类。此外,给出了一些实例让读者能够更深刻地理解这些知识并加以应用。然后,讲解了AndroidNDK开发的方方面面,为了更好地开发出高质量的应用程序,详细讲解了Android调试技术,包括普通Android应用程序和NDK应用程序调试。
当然,为满足一些有着丰富应用程序开发经验的读者和对Android系统底层有很大兴趣的读者的学习需求,本书还详细讲解了如何编译Android源程序工程,并对Android编译系统进行了深入剖析,让读者对Android工程的高效组织和自动编译有更深刻的理解。此外,本书还结合着源程序深入讲解了Android系统中的某些子系统,包括子系统的功能、结构和工作原理。
本书还着重讲解了Android系统改造的思路,详细讲解了一些改造Android系统的实例,如状态栏定制、开机动画、系统服务、系统应用改造,使读者通过动手实践来真正将所学知识融会贯通。
本书适合作为Android应用程序开发者的实践教材,也适合对Android系统原理有极大兴趣的爱好者阅读,还可供Android系统改造人员作为参考书使用。
目录
- 第一部分 Android应用程序开发
- 第1章 Android开发环境
- 1.1 初识庐山真面目——Android开发环境概述
- 1.2 Android开发系统环境要求
- 1.2.1 操作系统配置
- 1.2.2 开发环境配置要求
- 1.3 Android开发所需软件的下载
- 1.3.1 Elcipse
- 1.3.2 ADT
- 1.3.3 Android SDK
- 1.4 Android SDK开发环境配置
- 1.4.1 安装已下载的软件
- 1.4.2 本地安装ADT
- 1.4.3 网络安装ADT
- 1.4.4 创建AVD
- 1.4.5 新建工程HelloWorld
- 1.4.6 运行Android工程
- 1.5 Android NDK开发环境搭建
- 1.5.1 Android NDK简介
- 1.5.2 开发环境配置
- 1.5.3 NDK的实例开发
- 1.6 小结
- 第2章 Android基本应用开发与解析
- 2.1 应用程序结构
- 2.1.1 应用程序目录结构
- 2.1.2 知其然,知其所以然——Hello Wrold程序结构讲解
- 2.2 Android资源系统(Android resource system)
- 2.2.1 资源系统中的基本概念
- 2.2.2 Android资源系统引用
- 2.3 Android布局
- 2.3.1 线性布局(LinearLayout)
- 2.3.2 相对布局(RelativeLayout)
- 2.3.3 帧布局(FrameLayout)
- 2.3.4 表格布局(TableLayout)
- 2.3.5 绝对布局(AbsoluteLayout)
- 2.4 Android ViewGroup
- 2.4.1 TabWidget和TabHost
- 2.4.2 TabWidget和TabHost的应用
- 2.4.3 ListView(列表示图)
- 2.4.4 实现九宫图首选——GridView
- 2.5 Android View(示图)
- 2.5.1 文本框(TextView)
- 2.5.2 AutoCompleteTextView
- 2.5.3 编辑框(EditText)
- 2.5.4 下拉列表(Spinner)
- 2.5.5 拖动条(SeekBar)
- 2.5.6 评分条(RatingBar)
- 2.5.7 按钮(Button)
- 2.5.8 图片按钮(ImageButton)
- 2.5.9 图片框(ImageView)
- 2.5.10 画廊(Gallery)
- 2.6 Android UI事件处理
- 2.6.1 Android UI概述
- 2.6.2 事件监听器和事件处理
- 2.6.3 监听器和事件处理实例
- 2.7 小结
- 第3章 Android应用程序清单
- 3.1 应用程序结构
- 3.1.1 Manifest文件作用
- 3.1.2 元素顺序问题
- 3.1.3 AndroidManifest.xml的功能介绍
- 3.1.4 AndroidManifest.xml的结构和规则
- 3.1.5 结合实例综述说明
- 3.2 Manifest文件结构
- 3.3 Manifest文件中各个元素及属性介绍
- 3.3.1
- 3.3.2
- 3.3.3
- 3.3.4
- 3.3.5
- 3.3.6
- 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列表
- 3.5 小结
- 第4章 Androidr的4大组件
- 4.1 Activity简介和应用实例
- 4.1.1 Activity简介
- 4.1.2 Activity的生命周期
- 4.1.3 Actvity堆栈(Stack)
- 4.1.4 Activity使用实例
- 4.1.5 多个Activity之间的数据传递
- 4.1.6 Actvity的生命周期实例
- 4.2 服务(Service)应用
- 4.2.1 Service概念及使用实例
- 4.2.2 Service的生命周期
- 4.2.3 Service与Activity通信
- 4.2.4 Service与Activity通信实例
- 4.3 存储与访问
- 4.3.1 文件进行数据存储
- 4.3.2 SharedPreferences
- 4.3.3 使用SQLite数据库存储数据
- 4.3.4 内容提供器——Content provider
- 4.4 广播(Broadcast)与接收(Receiver)
- 4.4.1 概述
- 4.4.2 广播的生命周期
- 4.4.3 广播实例
- 4.5 小结
- 第5章 Android应用层通信机制
- 5.1 Intent通信机制
- 5.1.1 Intent概述
- 5.1.2 Intent对象
- 5.1.3 Intent数据传递Bundle
- 5.1.4 Intent过滤器——Intent filters
- 5.1.5 一般案例
- 5.1.6 如何利用Intent来匹配
- 5.1.7 Intent的实例
- 5.2 Handler消息通信机制
- 5.2.1 Handler机制概述
- 5.2.2 Handler发送消息的方法列表
- 5.2.3 Handler实例
- 5.3 小结
- 第6章 综合案例——多线程下载器开发
- 6.1 多线程下载概述
- 6.2 Android多线程下载
- 6.3 小结
- 第7章 Android应用程序设计与优化
- 7.1 UI设计
- 7.2 性能设计
- 7.3 针对响应的设计
- 7.4 无缝性设计
- 7.5 小结
- 第二部分 Android调试技术与编译系统
- 第8章 Android工具介绍
- 8.1 模拟器Emulator命令
- 8.2 Android模拟器
- 8.2.1 启动和关闭模拟器
- 8.2.2 操作模拟器
- 8.2.3 模拟器启动选项
- 8.2.4 使用模拟器控制台
- 8.2.5 使用模拟器皮肤
- 8.2.6 运行多个模拟器实例
- 8.2.7 在模拟器上安装应用程序
- 8.2.8 SD卡模拟
- 8.2.9 故障排除
- 8.2.10 模拟器的限制
- 8.3 adb
- 8.3.1 发出adb命令
- 8.3.2 查询模拟器/设备
- 8.3.3 向特定的模拟器/设备发送命令
- 8.3.4 安装软件
- 8.3.5 转发端口
- 8.3.6 从模拟器/设备中导入导出文件
- 8.3.7 adb命令列表
- 8.3.8 启动shell命令
- 8.3.9 启动logcat
- 8.4 ADT插件
- 8.5 Android虚拟设备
- 8.5.1 界面方式
- 8.5.2 命令行方式
- 8.6 设计用户界面利器——Hierarchy Viewer
- 8.7 layoutopt
- 8.8 Draw 9-patch
- 8.9 调试工具——DDMS
- 8.9.1 DDMS工作原理
- 8.9.2 启动DDMS
- 8.9.3 DDMS功能
- 8.10 资源打包工具——aapt
- 8.11 IDL语言——aidl
- 8.11.1 用aidl实现IPC
- 8.11.2 调用的IPC方法
- 8.12 sqlite3
- 8.13 Traceview
- 8.13.1 创建Trace文件
- 8.13.2 将Trace文件复制到主机
- 8.13.3 使用Traceview查看跟踪文件
- 8.13.4 Traceview文件格式
- 8.13.5 Traceview Known Issues
- 8.13.6 dmtracedump用法
- 8.14 mksdcard
- 8.15 bat脚本——dx
- 8.16 压力测试工具——Monkey
- 8.16.1 Monkey简介
- 8.16.2 Monkey的基本用法
- 8.16.3 命令选项详解
- 8.16.4 实例
- 8.17 android工具
- 8.18 优化APK新工具——zipalign
- 8.19 小结
- 第9章 调试技术
- 9.1 Android应用程序调试
- 9.1.1 日志式调试
- 9.1.2 Eclipse调试
- 9.1.3 TraceView跟踪
- 9.1.4 单元测试(JUNIT)
- 9.2 Web应用程序调试
- 9.2.1 在Android浏览器中用控制台API
- 9.2.2 在WebView中用控制台API
- 9.3 NDK调试
- 9.3.1 日志式调试
- 9.3.2 ndk-gdb调试
- 9.4 系统源代码调试
- 9.4.1 编译Android源代码
- 9.4.2 导入Android源代码工程
- 9.4.3 调试程序
- 9.4.4 调试说明
- 9.5 Android程序调试原理
- 9.6 小结
- 第10章 Android编译系统
- 10.1 Android编译系统概述
- 10.2 编译系统入口
- 10.3 Makefile文件
- 10.3.1 理解Makefile文件
- 10.3.2 简单APK的Makefile
- 10.3.3 使用jar文件的APK的Makefile文件
- 10.3.4 平台密钥签名的APK的Makefile文件
- 10.3.5 特定厂商签名的APK的Makefile文件
- 10.3.6 增加已编译好的APK的Makefile文件
- 10.3.7 增加静态Java库
- 10.4 编译层次结构
- 10.5 配置新产品的Makefile
- 10.5.1 配置步骤
- 10.5.2 新产品的文件结构树
- 10.5.3 产品定义文件
- 10.6 编译系统的结构
- 10.7 小结
- 第11章 Android系统编译环境搭建
- 11.1 系统要求
- 11.2 安装工具
- 11.3 获取源代码
- 11.4 编译源代码
- 11.5 模块编译
- 11.6 编译Android内核
- 11.7 编译问题
- 11.7.1 Git工具详解
- 11.7.2 repo工具详解
- 11.7.3 位操作系统无法编译问题
- 11.7.4 JDK版本
- 11.7.5 arm-eabi-4.4.3版本问题
- 11.7.6 libOpenSLES.so问题
- 11.7.7 libclearsilver-jni.so问题
- 11.7.8 LOCAL_MODULE_TAGS问题
- 11.8 小结
- 第12章 NDK开发
- 12.1 NDK开发概述
- 12.2 Android.mk语法规范
- 12.2.1 NDK提供的变量
- 12.2.2 NDK提供的宏
- 12.2.3 NDK模块描述变量
- 12.3 Application.mk语法规范
- 12.4 导入模块功能
- 12.4.1 NDK_MODULE_PATH变量
- 12.4.2 编写导入模块
- 12.4.3 命名导入模块
- 12.4.4 一些建议
- 12.5 NDK预编译功能
- 12.5.1 声明预编译库模块
- 12.5.2 引用预编译模块
- 12.5.3 导出预编译模块的头文件
- 12.5.4 调试预编译模块
- 12.5.5 预编译模块的ABI
- 12.6 NDK编译工具ndk-build
- 12.7 NDK调试工具ndk-gdb
- 12.8 小结
- 第三部分 Android子系统分析
- 第13章 Android系统架构
- 13.1 Android概念
- 13.2 Android平台特性
- 13.3 Android架构
- 13.3.1 Android应用程序层
- 13.3.2 Android应用程序框架层
- 13.3.3 Android程序库
- 13.3.4 Android运行时库
- 13.3.5 Linux内核
- 13.4 Android版本演化
- 13.5 小结
- 第14章 系统服务模型
- 14.1 系统服务模型概述
- 14.2 Android系统服务启动过程
- 14.3 Android系统服务注册
- 14.4 Android系统服务请求
- 14.5 小结
- 第15章 Android启动过程
- 15.1 Android初始化语言
- 15.1.1 Actions(行动)
- 15.1.2 Services(服务)
- 15.1.3 Options(选项)
- 15.1.4 Triggers(触发器)
- 15.1.5 Commands(命令)
- 15.1.6 Properties(属性)
- 15.1.7 iniot.conf实例
- 15.1.8 Android调试记录
- 15.2 Android启动过程
- 15.2.1 Android概述
- 15.2.2 Android启动过程
- 15.2.3 init.rc文件解析过程
- 15.3 小结
- 第16章 图形系统
- 16.1 图形系统概述
- 16.2 驱动程序接口之一——Framebuffer分析
- 16.3 OpenGL ES分析
- 16.4 Skia图形库分析
- 16.5 SurfaceFlinger服务
- 16.6 Surface显示过程
- 16.7 小结
- 第17章 蓝牙系统
- 17.1 蓝牙系统概述
- 17.2 蓝牙系统架构
- 17.3 蓝牙系统源代码分析
- 17.3.1 蓝牙服务的启动和关闭
- 17.3.2 蓝牙系统与蓝牙耳机的连接
- 17.4 移植和编译
- 17.4.1 移植
- 17.4.2 编译
- 17.4.3 遇到的问题
- 17.4.4 工具
- 17.5 蓝牙新特性
- 17.6 小结
- 第18章 电话系统
- 18.1 电话系统概述
- 18.2 Android无线接口层
- 18.2.1 Android无线接口总述
- 18.2.2 RIL初始化
- 18.2.3 RIL交互
- 18.2.4 RIL实现
- 18.3 GSM驱动模块
- 18.3.1 GSM基本架构及初始化
- 18.3.2 请求流程
- 18.3.3 响应流程
- 18.4 电话和短信
- 18.5 小结
- 第19章 多媒体系统
- 19.1 多媒体概述
- 19.2 多媒体系统架构
- 19.3 多媒体系统源代码分析
- 19.3.1 系统共享库架构及关系
- 19.3.2 系统框架重要头文件
- 19.3.3 MediaPlayer分析
- 19.4 OpenCore概述
- 19.5 小结
- 第20章 Binder通信机制
- 20.1 Binder通信机制概述
- 20.2 Binder通信机制工作原理
- 20.2.1 Binder组织结构
- 20.2.2 Binder通信时序
- 20.2.3 Binder类继承关系
- 20.3 Binder源代码分析
- 20.3.1 Binder源代码文件及其解析
- 20.3.2 源代码分析
- 20.4 小结
- 第21章 电源管理
- 21.1 电源管理概述
- 21.2 电源管理源代码分析
- 21.3 系统休眠与唤醒源代码分析
- 21.4 小结
- 第四部分 Android系统改造实战
- 第22章 StatusBar改造
- 22.1 StatusBar概述
- 22.2 自定义StatusBar图标
- 22.2.1 制作图标
- 22.2.2 布局选择文件
- 22.2.3 修改布局文件
- 22.3 修改Status Bar图标默认值
- 22.4 增加触摸事件
- 22.5 小结
- 第23章 开机动画改造
- 23.1 开机动画概述
- 23.2 开机图片
- 23.3 开机文字
- 23.4 开机动画
- 23.5 开机动画定制
- 23.5.1 制作initlogo.rle
- 23.5.2 修改开机文字
- 23.5.3 制作开机动画bootanimation
- 23.6 小结
- 第24章 系统服务改造指南
- 24.1 自定义Native服务
- 24.1.1 自定义服务
- 24.1.2 注册服务
- 24.1.3 调用服务
- 24.1.4 运行测试
- 24.2 自定义Android服务
- 24.2.1 自定义服务
- 24.2.2 注册服务
- 24.2.3 调用服务
- 24.2.4 运行测试
- 24.3 小结
- 第25章 构建自己的系统应用
- 25.1 系统应用的概述
- 25.2 编写系统应用
- 25.3 模块化编译系统应用
- 25.4 运行系统应用
- 25.5 小结