第1章 Android技術概述 1
1.1 智能手機係統介紹 1
1.2 搭建Android應用開發環境 2
1.2.1 安裝Android SDK的
係統要求 2
1.2.2 安裝JDK 2
1.2.3 獲取並安裝Eclipse和
Android SDK 5
1.2.4 安裝ADT 7
1.2.5 設定Android SDK Home 8
1.2.6 驗證開發環境 9
1.2.7 創建Android虛擬設備(AVD) 9
1.2.8 啓動AVD模擬器 10
1.2.9 解決搭建環境過程中
的常見問題 12
第2章 Android技術核心框架分析 15
2.1 簡析Android安裝文件 15
2.1.1 Android SDK目錄結構 15
2.1.2 android.jar及內部結構 16
2.1.3 閱讀SDK幫助文檔 16
2.1.4 常用的SDK工具 17
2.2 演示官方實例 19
2.3 剖析Android係統架構 23
2.3.1 Android體係結構介紹 23
2.3.2 Android應用工程
文件組成 25
2.4 簡述五大組件 27
2.4.1 用Activity來錶現界麵 27
2.4.2 用Intent和Intent Filters
實現切換 28
2.4.3 Service為你服務 28
2.4.4 用Broadcast Intent/Receiver發送廣播 29
2.4.5 用Content Provider
存儲數據 29
2.5 進程和綫程 29
2.5.1 先看進程 29
2.5.2 再看綫程 30
2.5.3 應用程序的生命周期 30
第3章 獲取並編譯源碼 33
3.1 在Linux係統中獲取
Android源碼 33
3.2 在Windows平颱獲取
Android源碼 34
3.3 分析Android源碼結構 36
3.3.1 應用程序 38
3.3.2 應用程序框架 39
3.3.3 係統服務 39
3.3.4 係統程序庫 41
3.3.5 係統運行庫 44
3.3.6 硬件抽象層 44
3.4 編譯源碼 45
3.4.1 搭建編譯環境 46
3.4.2 開始編譯 46
3.4.3 在模擬器中運行 47
3.4.4 常見的錯誤分析 48
3.4.5 實踐演練——演示兩種編譯
Android程序的方法 49
3.5 編譯Android Kernel 52
3.5.1 獲取Goldfish內核代碼 52
3.5.2 獲取MSM內核代碼 55
3.5.3 獲取OMAP內核代碼 55
3.5.4 編譯Android的Linux
內核 55
3.6 編譯源碼生成SDK 57
第4章 Android係統的安全機製 61
4.1 Android安全機製概述 61
4.1.1 Android的安全機製模型 61
4.1.2 Android的安全框架概述 62
4.2 分析Linux係統的安全機製 63
4.2.1 Linux用戶權限基礎 63
4.2.2 進程 68
4.3 分析Android係統的安全機製 70
4.3.1 沙箱模型介紹 70
4.3.2 應用程序的安全機製 72
4.3.3 分區加載機製 73
第5章 內存安全機製——匿名共享
內存係統 74
5.1 分析Ashmem驅動程序 74
5.1.1 基礎數據結構 74
5.1.2 初始化處理 75
5.1.3 打開匿名共享內存
設備文件 76
5.1.4 內存映射 78
5.1.5 實現讀寫操作 79
5.1.6 鎖定和解鎖 81
5.1.7 迴收內存塊 86
5.2 分析C++訪問接口層 87
5.2.1 接口MemoryBase 87
5.2.2 客戶端實現 90
5.2.3 接口MemoryBase 94
5.3 分析Java訪問接口層 97
5.4 內存優化機製 100
5.4.1 sp和wp簡析 100
5.4.2 詳解智能指針 102
5.5 Android內存係統的安全
機製分析 118
5.5.1 Ashmem匿名共享內存
的機理 119
5.5.2 使用Low Memory Killer
機製實現安全和高效 119
第6章 Binder通信安全機製(上) 121
6.1 Binder機製基礎 121
6.1.1 選擇Binder機製的
原因——簡潔快速、
低耗內存、更加安全 121
6.1.2 Binder安全機製的
必要性 122
6.1.3 Android的進程間通信
(IPC)機製Binder 122
6.1.4 Service Manager是Binder
機製的上下文管理者 123
6.1.5 Service Manager服務 137
6.2 分析Binder驅動程序 140
6.2.1 分析數據結構 140
6.2.2 分析設備初始化 150
6.2.3 打開Binder設備文件 151
6.2.4 內存映射 152
6.2.5 釋放物理頁麵 156
6.2.6 分配內核緩衝區 157
6.2.7 釋放內核緩衝區 158
6.2.8 查詢內核緩衝區 160
第7章 Binder通信安全機製(下) 162
7.1 Binder封裝庫 162
7.1.1 類BBinder 163
7.1.2 類BpRefBase 165
7.1.3 類IPCThreadState 166
7.2 初始化Java層Binder框架 168
7.3 分析MediaServer的通信機製 170
7.3.1 MediaServer的入口函數 170
7.3.2 ProcessState 171
7.3.3 defaultServiceManager 173
7.3.4 注冊MediaPlayerService 179
7.3.5 分析StartThread Pool和
join Thread Pool 188
7.4 總結進程通信機製的安全性 190
7.4.1 進程先綫程安全 190
7.4.2 遠程過程調用機製
(RPC) 191
7.4.3 實現綫程安全方法 192
7.4.4 Binder中的安全策略 193
第8章 Android虛擬機基礎 194
8.1 Dalvik VM和JVM的差異 194
8.2 Dalvik虛擬機的主要特徵 195
8.3 Dalvik VM架構 196
8.3.1 Dalvik虛擬機的代碼結構 196
8.3.2 dx工具 198
8.3.3 Dalvik VM的進程管理 198
8.3.4 Android的初始化流程 198
8.4 Dalvik VM控製VM命令詳解 199
8.4.1 基本命令 199
8.4.2 擴展的JNI檢測 199
8.4.3 斷言 200
8.4.4 字節碼校驗和優化 200
8.4.5 Dalvik VM的運行模式 201
8.4.6 死鎖預測 201
8.4.7 dump堆棧追蹤 202
8.4.8 dex文件和校驗 202
8.4.9 産生標誌位 202
8.5 Dalvik VM進程管理 202
8.5.1 Zygote基礎 202
8.5.2 Dalvik的進程模型 211
8.5.3 Dalvik的進程通信 215
8.6 Zygote(孕育)進程 218
8.6.1 Zygote基礎 218
8.6.2 分析Zygote的啓動過程 219
第9章 Dalvik VM的運作流程 233
9.1 Dalvik VM相關的可執行程序 233
9.1.1 dalvikvm、dvz和
app_process簡介 233
9.1.2 對比app_process和
dalvikvm的執行過程 234
9.2 初始化Dalvik VM 236
9.2.1 開始虛擬機的準備工作 236
9.2.2 初始化跟蹤顯示係統 237
9.2.3 初始化垃圾迴收器 237
9.2.4 初始化綫程列錶和
主綫程環境參數 237
9.2.5 分配內部操作方法的
錶格內存 238
9.2.6 初始化虛擬機的指令碼
相關的內容 238
9.2.7 分配指令寄存器狀態
的內存 239
9.2.8 分配指令寄存器狀態
的內存和最基本用的
Java庫 239
9.2.9 初始化使用的Java類庫
綫程類 240
9.2.10 初始化虛擬機使用的
異常Java類庫 241
9.2.11 初始化其他對象 242
9.3 啓動Zygote 250
9.3.1 在init.rc中配置zygote
啓動參數 250
9.3.2 啓動Socket服務端口 250
9.3.3 加載preload-classes 251
9.3.4 加載preload-resources 252
……
第10章 DEX文件詳解
第11章 編寫安全的應用程序
第12章 應用安全策略
第13章 文件加密
第14章 電話係統的安全機製
第15章 短信係統的安全機製
第16章 網絡防火牆係統實現
第17章 文件加密係統實現
· · · · · · (
收起)