第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內核源代碼 5
1.4.1 Linux內核支持的Android設備 5
1.4.2 下載Linux內核源代碼 5
1.4.3 查看Linux內核的分支 7
1.4.4 看看Google那幫傢夥在做什麼 8
1.4.5 獲取Linux內核的配置文件 10
1.4.6 安裝交叉編譯器 11
1.4.7 編譯Linux內核源代碼 12
1.5Cyanogenmod(CM)源代碼 12
1.5.1 什麼是CM 12
1.5.2 CM支持哪些Android設備 13
1.5.3與Android設備對應的Codename和CM版本 14
1.5.4 下載CM Android源代碼 15
1.5.5 下載經過CM適配的Linux內核源代碼 17
1.5.6 編譯Android源代碼生成Recovery ROM 17
1.5.7 單獨編譯CM Linux內核源代碼 21
1.5.8 刷機!刷機! 22
1.5.9 下載現成的CM ROM 23
1.6小結 24
第2章 提取ROOT權限 26
2.1 什麼是ROM 26
2.2 ROM的種類 27
2.3刷官方的ROM 27
2.3.1 下載官方的ROM 28
2.3.2 用無人值守方式刷ROM 28
2.3.3 分彆刷ROM包含的各種鏡像文件 29
2.4 Android手機獲取ROOT權限的必要性 31
2.5 提取ROOT權限的原理 32
2.6 用極客的方式提取ROOT權限 33
2.6.1 提取ROOT權限的步驟 33
2.6.2 需要一個很酷的recovery 34
2.6.3 su命令源代碼分析 36
2.6.4 製作第一個Recovery刷機包(編寫updater-script腳本文件) 39
2.6.5 首次通過DIY方式提取ROOT權限 43
2.6.6 上傳Android應用到/system/app目錄 43
2.7 小結 44
第3章 Root權限的安全屏障 45
3.1 通過su提取Root權限的安全隱患 45
3.2 Android應用申請Root權限 46
3.3 Superuser.apk為什麼不見瞭 48
3.4 申請Root權限為什麼失靈瞭 50
3.5CM ROM如何為Root權限增加安全屏障 52
3.6 ADB Shell動作管理命令(am) 55
3.6.1 顯示窗口(Activity) 55
3.6.2發送廣播(Broadcast) 56
3.6.3 開始服務(Service) 57
3.7su實現原理及源代碼分析 57
3.7.1 su進行Root授權的處理流程 57
3.7.2 初始化調用者數據 64
3.7.3 初始化路徑 66
3.7.4 動態宏定義 67
3.7.5 檢測數據庫 69
3.7.6 創建LocalSocket服務 70
3.7.7 顯示“Root授權”窗口 72
3.7.8 等待Superuser連接LocalSocket服務 73
3.7.9 嚮Superuser傳輸調用者信息 74
3.7.10 接收用戶選擇的“Root授權”策略 75
3.7.11 允許和拒絕“Root授權” 75
3.8 Superuser的實現原理與源代碼分析 77
3.8.1 “Root授權”警告窗口的處理流程 77
3.8.2 設置“Root授權”窗口的控件 80
3.8.3 獲取“Root授權”持續時間 83
3.8.4 處理“Root授權”策略 85
3.8.5 讀取Su協議數據 86
3.8.6獲取和設置“調用者”信息 88
3.9 小結 90
第4章 ROM定製 91
4.1 刷機的那些事 91
4.1.1 Android刷機的本質 91
4.1.2 製作ROM的不同層次 93
4.1.3 為什麼要刷機 94
4.1.4 刷機帶來的風險及其預防措施 95
4.2在官方ROM的基礎上定製各種鏡像 96
4.2.1 修改係統鏡像(system.img) 96
4.2.2 定製開機動畫 99
4.2.3 用戶數據鏡像(userdata.img) 103
4.2.4 內存磁盤鏡像(ramdisk.img) 106
4.2.5Linux內核鏡像(boot.img) 108
4.2.6 製作已經有ROOT權限的ROM 109
4.2.7 Recovery鏡像(recovery.img) 110
4.2.8 緩存鏡像(cache.img) 111
4.2.9 製作完美的Bootloader ROM 112
4.3 直接從CM源代碼製作ROM 114
4.3.1 製作Bootloader ROM 115
4.3.2製作Recovery ROM 116
4.4 Edify語言 120
4.4.1 Edify語言概述 120
4.4.2 測試Edity腳本(updater-script) 120
4.4.3 Edity函數詳解 122
4.4.4 Edity語言的實現原理 131
4.5集成Google Services Framework和Google Play 134
4.6在CM ROM中集成第三方APK程序 135
4.6.1為什麼不能直接復製APK和ODEX文件 135
4.6.2 校驗odex文件需要依賴哪些Library 136
4.6.3 閤並APK和ODEX文件 136
4.7 小結 139
第5章 Recovery深度分析與定製 140
5.1 什麼是Recovery 140
5.2 Clockworkmod Recovery源代碼解析 142
5.2.1如何分析Recovery源代碼 142
5.2.2 顯示主菜單 144
5.2.3 切換不同的菜單項 146
5.2.4 選擇菜單項 148
5.3Recovery支持的各種操作 150
5.3.1 重啓和關閉Android設備 150
5.3.2 從SD卡刷ROM 151
5.3.3 使用sideload模式刷ROM 157
5.3.4 清除指定文件係統中的數據 158
5.3.5 備份與恢復 161
5.3.6 掛載(mount)、卸載(umount)和格式化(format)文件係統 167
5.4添加自己的Recovery菜單項 170
5.5 漢化Recovery 172
5.5.1 漢化Recovery的原理和步驟 172
5.5.2 初始化字體 173
5.5.3 繪製中文字符 175
5.6小結 176
第6章Android係統應用的開發與測試 177
6.1 什麼是Android係統應用 177
6.2為什麼要研究Android係統應用 178
6.3如何編寫Android係統應用 178
6.4 分析第一個Android係統應用:計算器 180
6.4.1 計算器應用(Calculator)的基本結構 181
6.4.2 編譯、測試和調試Calculator 183
6.4.3 允許其他Android應用通過Calculator計算錶達式 184
6.5 小結 186
第7章 安裝與卸載應用程序(PackageInstaller) 187
7.1 分析源代碼的第一步應該做什麼 187
7.2 尋找PackageInstaller的突破口 190
7.3安裝和卸載Android應用的全部方式 192
7.4 安裝Android應用前的校驗 193
7.4.1 安裝Android應用的初始化工作 193
7.4.2 顯示校驗窗口 197
7.4.3 獲取Android應用的權限列錶 201
7.5開始安裝應用程序 204
7.5.1 PackageInstaller的安裝原理 204
7.5.2 靜默安裝Android應用 211
7.6 卸載Android應用 214
7.6.1 PackageInstaller卸載Android應用前的確認 214
7.6.2 卸載Android應用的原理 217
7.6.3 靜默卸載Android應用 220
7.7小結 222
第8章 係統設置(一) 224
8.1 為係統設置添加新功能 224
8.1.1 係統設置的編譯與權限 224
8.1.2修改開機動畫 226
8.1.3 尋找Settings的入口點 231
8.1.4 為Settings添加新的功能項 233
8.1.5 遷移修改開機動畫的窗口類 235
8.2Wi-Fi 236
8.2.1 如何為設置項添加Switch控件 237
8.2.2 為“修改開機動畫”設置項添加Switch控件 242
8.2.3“關閉/打開”Wi-Fi 245
8.2.4 係統信息與SQLite的WAL模式 248
8.2.5禁止飛行模式下單獨開啓Wi-Fi
· · · · · · (
收起)