当前位置:首页 > 工业技术
Android深度探索  卷2  系统应用源代码分析与ROM定制
Android深度探索  卷2  系统应用源代码分析与ROM定制

Android深度探索 卷2 系统应用源代码分析与ROM定制PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:李宁编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2015
  • ISBN:9787115367945
  • 页数:496 页
图书介绍:国内第一本详细分析定制Android ROM的著作,详细分析了Android系统应用的源代码,使读者可以更深入了解Android内部应用是如何做到其他程序无法做到的事,并且从这些源代码中可以获得很多对开发应用程序有益的帮助。
《Android深度探索 卷2 系统应用源代码分析与ROM定制》目录

第1章 学习前的准备工作 1

1.1 安装和配置JDK 1

1.2 安装和配置Android开发环境 1

1.3 官方Android源代码 2

1.3.1 下载Android源代码 2

1.3.2 编译Android源代码 3

1.4 官方Linux内核源代码 4

1.4.1 Linux内核支持的Android设备 4

1.4.2 下载Linux内核源代码 5

1.4.3 查看Linux内核的分支 6

1.4.4 看看Google公司的人在做什么 6

1.4.5 获取Linux内核的配置文件 8

1.4.6 安装交叉编译器 9

1.4.7 编译Linux内核源代码 10

1.5 Cyanogenmod(CM)源代码 10

1.5.1 什么是CM 10

1.5.2 CM支持哪些Android设备 11

1.5.3 与Android设备对应的Codename和CM版本 12

1.5.4 下载CMAndroid源代码 13

1.5.5 下载经过CM适配的Linux内核源代码 14

1.5.6 编译Android源代码生成ReoveryROM 14

1.5.7 单独编译CMLinux内核源代码 17

1.5.8 刷机!刷机! 18

1.5.9 下载现成的CMROM 19

1.6 小结 20

第2章 提取ROOT权限 21

2.1 什么是ROM 21

2.2 ROM的种类 22

2.3 刷官方的ROM 22

2.3.1 下载官方的ROM 23

2.3.2 用无人值守方式刷ROM 23

2.3.3 分别刷ROM包含的各种镜像文件 24

2.4 Android手机获取ROOT权限的必要性 26

2.5 提取ROOT权限的原理 26

2.6 用极客的方式提取ROOT权限 27

2.6.1 提取ROOT权限的步骤 27

2.6.2 需要一个很酷的recovery 28

2.6.3 su命令源代码分析 30

2.6.4 制作第一个Recovery刷机包(编写updater-script脚本文件) 32

2.6.5 首次通过DIY方式提取ROOT权限 35

2.6.6 上传Android应用到/system/app目录 35

2.7 小结 36

第3章 Root权限的安全屏障 37

3.1 通过su提取Root权限的安全隐患 37

3.2 Android应用申请Root权限 38

3.3 Superuser.apk为什么不见了 39

3.4 申请Root权限为什么失灵了 41

3.5 CMROM如何为Root权限增加安全屏障 42

3.6 ADBShell动作管理命令(am) 44

3.6.1 显示窗口(Activity) 44

3.6.2 发送广播(Broadcast) 45

3.6.3 开始服务(Service) 46

3.7 su实现原理及源代码分析 46

3.7.1 su进行Root授权的处理流程 46

3.7.2 初始化调用者数据 50

3.7.3 初始化路径 53

3.7.4 动态宏定义 54

3.7.5 检测数据库 56

3.7.6 创建LocalSocket服务 57

3.7.7 显示“Root授权”窗口 58

3.7.8 等待Superuser连接LocalSocket服务 59

3.7.9 向Superuser传输调用者信息 60

3.7.10 接收用户选择的“Root授权”策略 61

3.7.11 允许和拒绝“Root授权” 62

3.8 Superuser的实现原理与源代码分析 63

3.8.1 “Root授权”警告窗口的处理流程 63

3.8.2 设置“Root授权”窗口的控件 65

3.8.3 获取“Root授权”持续时间 68

3.8.4 处理“Root授权”策略 70

3.8.5 读取Su协议数据 71

3.8.6 获取和设置“调用者”信息 73

3.9 小结 74

第4章 ROM定制 75

4.1 刷机的那些事 75

4.1.1 Android刷机的本质 75

4.1.2 制作ROM的不同层次 77

4.1.3 为什么要刷机 78

4.1.4 刷机带来的风险及其预防措施 78

4.2 在官方ROM的基础上定制各种镜像 79

4.2.1 修改系统镜像(system.img) 80

4.2.2 定制开机动画 82

4.2.3 用户数据镜像(userdata.img) 84

4.2.4 内存磁盘镜像(ramdisi.img) 87

4.2.5 Linux内核镜像(boot.img) 88

4.2.6 制作已经有ROOT权限的ROM 89

4.2.7 Recovery镜像(recovery.img) 90

4.2.8 缓存镜像(cache.img) 91

4.2.9 制作完美的Bootloader ROM 91

4.3 直接从CM源代码制作ROM 93

4.3.1 制作Bootloader ROM 94

4.3.2 制作Recovery ROM 95

4.4 Edify语言 98

4.4.1 Edify语言概述 98

4.4.2 测试Edify脚本(updater-script) 98

4.4.3 Edify函数详解 99

4.4.4 Ediry语言的实现原理 106

4.5 集成Google Services Framework和Google Play 109

4.6 在CMROM中集成第三方APK程序 110

4.6.1 为什么不能直接复制APK和ODEX文件 110

4.6.2 校验odex文件需要依赖哪些Library 111

4.6.3 合并APK和ODEX文件 111

4.7 小结 113

第5章 Recovery深度分析与定制 114

5.1 什么是Recovery 114

5.2 Clockworkmod Recovery源代码解析 116

5.2.1 如何分析Recovery源代码 116

5.2.2 显示主菜单 117

5.2.3 切换不同的菜单项 120

5.2.4 选择菜单项 121

5.3 Recovery支持的各种操作 122

5.3.1 重启和关闭Android设备 122

5.3.2 从SD卡刷ROM 124

5.3.3 使用sideload模式刷ROM 129

5.3.4 清除指定文件系统中的数据 130

5.3.5 备份与恢复 133

5.3.6 挂载(mount)、卸载(umount)和格式化(format)文件系统 137

5.4 添加自己的Recovery菜单项 140

5.5 汉化Recovery 142

5.5.1 汉化Recovery的原理和步骤 142

5.5.2 初始化字体 143

5.5.3 绘制中文字符 144

5.6 小结 145

第6章 Android系统应用的开发与测试 146

6.1 什么是Android系统应用 146

6.2 为什么要研究Android系统应用 146

6.3 如何编写Android系统应用 147

6.4 分析第一个Android系统应用:计算器 149

6.4.1 计算器应用(Calculator)的基本结构 149

6.4.2 编译、测试和调试Calculator 152

6.4.3 允许其他Android应用通过Calculator计算表达式 152

6.5 小结 154

第7章 安装与卸载应用程序(PackageInstaller) 155

7.1 分析源代码的第一步应该做什么 155

7.2 寻找PaekageInstaller的突破口 157

7.3 安装和卸载Android应用的全部方式 159

7.4 安装Android应用前的校验 160

7.4.1 安装Android应用的初始化工作 160

7.4.2 显示校验窗口 163

7.4.3 获取Android应用的权限列表 166

7.5 开始安装应用程序 168

7.5.1 PackageInstaller的安装原理 169

7.5.2 静默安装Android应用 174

7.6 卸载Android应用 177

7.6.1 PackageInstaller卸载Android应用前的确认 178

7.6.2 卸载Android应用的原理 180

7.6.3 静默卸载Android应用 182

7.7 小结 184

第8章 系统设置(一) 185

8.1 为系统设置添加新功能 185

8.1.1 系统设置的编译与权限 185

8.1.2 修改开机动画 186

8.1.3 寻找Settings的入口点 191

8.1.4 为Settings添加新的功能项 192

8.1.5 迁移修改开机动画的窗口类 194

8.2 Wi-Fi 195

8.2.1 如何为设置项添加Switch控件 195

8.2.2 为“修改开机动画”设置项添加Switch控件 199

8.2.3 “关闭/打开”Wi-Fi 202

8.2.4 系统信息与SQLite的WAL模式 204

8.2.5 禁止飞行模式下单独开启Wi-Fi 205

8.2.6 系统设置内容提供者(SettingsContent Provider) 206

8.2.7 用广播方式设置Switch控件的状态 211

8.2.8 搜索可用热点 212

8.2.9 热点对象(AccessPoint) 216

8.2.10 获取可用热点的各种状态 223

8.2.11 连接可用热点 226

8.3 蓝牙 227

8.3.1 “关闭/打开”蓝牙 227

8.3.2 蓝牙的本地状态 228

8.3.3 蓝牙设置的架构与实现 229

8.3.4 “允许/禁止”当前蓝牙设备被搜索到 234

8.4 流量使用情况 235

8.5 小结 241

第9章 系统设置(二) 242

9.1 声音 242

9.1.1 调整音量 242

9.1.2 响铃模式 247

9.1.3 手机铃声 249

9.1.4 渐强铃声 251

9.2 显示 253

9.2.1 调整屏幕亮度 254

9.2.2 壁纸设置(动态扩展) 256

9.2.3 屏幕休眠设置 258

9.3 存储 260

9.3.1 添加设置项 261

9.3.2 检测存储空间 264

9.4 语言与输入法 269

9.4.1 改变当前语言 269

9.4.2 设置当前的输入法 273

9.4.3 扩展输入法 274

9.5 开发者选项 278

9.5.1 Root授权 278

9.5.2 启动USB调试 282

9.5.3 启动网络ADB调试 284

9.6 关于手机 287

9.6.1 手机的状态信息 287

9.6.2 手机的其他信息 290

9.6.3 在线更新(OTA) 291

9.7 小结 292

第10章 系统设置内容提供者(SettingsProvider) 293

10.1 系统设置数据库创建与升级 293

10.2 读写系统设置的数据(settings.db) 297

10.3 系统设置数据的备份和恢复 300

10.4 小结 305

第11章 电话与联系人 306

11.1 拨号应用 306

11.1.1 实现拨号盘UI 306

11.1.2 显示与删除电话号 310

11.1.3 用拨号盘输入电话号 312

11.1.4 播放和停止按键提示音 314

11.1.5 拨打电话 316

11.1.6 电话号到底是如何拨出的 320

11.2 通话记录管理 325

11.3 联系人管理 332

11.3.1 初始化联系人列表 332

11.3.2 获取经常呼叫的联系人 334

11.3.3 获取所有的联系人 338

11.3.4 来电黑名单 339

11.4 小结 342

第12章 短信和彩信管理 343

12.1 显示会话列表 343

12.1.1 主窗口类ConversationList和跨应用程序调用 343

12.1.2 会话列表适配器(ConversationList Adapter) 344

12.1.3 异步查询会话信息 346

12.2 删除会话 349

12.3 发送短信 354

12.3.1 显示发送短信窗口 354

12.3.2 发送短信 356

12.3.3 监听发送短信状态 359

12.4 监听短信的收发 361

12.4.1 处理收发短信广播的流程 362

12.4.2 处理接收短信广播 363

12.4.3 处理发送短信广播 365

12.5 浏览当前会话 368

12.6 小结 369

第13章 AndroidHome应用:Launcher2(一) 370

13.1 Launcher2的那些事 370

13.2 初始化LauncherHomeUI 372

13.2.1 Launcher2的主布局文件(launcher.xml) 372

13.2.2 初始化Android桌面 373

13.2.3 全局对象LauncherApplication 376

13.2.4 初始化桌面UI控制器 379

13.2.5 装载桌面UI视图 381

13.2.6 任务装载器(LoaderTask) 382

13.3 装载和绑定Workspace 385

13.3.1 根据不同类型装载桌面视图 385

13.3.2 装载默认的桌面UI数据 390

13.3.3 添加默认桌面UI数据的若干方法 398

13.3.4 从favorites表中提取和分类桌面UI数据 402

13.3.5 绑定Workspace 405

13.3.6 回调方法 407

13.3.7 绑定前的清理工作 408

13.3.8 在Android桌面上添加各种UI视图 408

13.3.9 如何将快捷方式和文件夹添加到Android桌面上 410

13.3.10 如何将AppWidget添加到Android桌面上 412

13.4 装载和绑定Android应用 413

13.4.1 装载和绑定Android应用的时机 413

13.4.2 一体化装载和绑定Android应用 416

13.4.3 隐藏和显示指定的Android应用 419

13.4.4 隐藏和显示系统和普通Android应用 422

13.4.5 仅绑定Android应用 424

13.5 小结 425

第14章 AndroidHome应用:Launcher2(二) 426

14.1 Android桌面 426

14.1.1 桌面布局(CellLayout) 426

14.1.2 工作空间(Workspace) 429

14.1.3 底座(Hotseat) 432

14.1.4 桌面左右滑动(DragLayer) 433

14.2 桌面UI 438

14.2.1 搜索框 438

14.2.2 拖放目标区域 442

14.2.3 删除快捷方式和卸载Android应用 448

14.2.4 编辑快捷方式 455

14.2.5 查看快捷方式和AppWidget的应用信息 458

14.3 文件夹(Folder) 459

14.3.1 文件夹的创建过程 459

14.3.2 将快捷方式拖入文件夹 462

14.3.3 将快捷方式从文件夹中拖出 463

14.3.4 显示文件夹中的快捷方式列表 465

14.4 应用程序列表 468

14.5 壁纸设置 469

14.5.1 壁纸选择器 469

14.5.2 壁纸设置与壁纸图像来源 471

14.6 广播接收器 473

14.6.1 安装快捷方式(InstallShortcut Receiver) 473

14.6.2 卸载快捷方式(UninstallShortcut Receiver) 476

14.6.3 回复默认桌面(PreloadReceiver) 478

14.7 内容提供者(LauncherProvider) 481

14.8 小结 481

第15章 近场通信(NFC)的实现原理 482

15.1 处理NFC NDEF消息的服务 482

15.2 处理NFC消息的回调接口 484

15.3 调用处理NFC消息的窗口(Activity) 486

15.4 手持设备与蓝牙传输 490

15.5 继续尝试其他处理NFC消息的可能性 491

15.6 通过蓝牙传递Uri 493

15.7 小结 496

返回顶部