第1章 預備知識 1
1.1 Android係統架構 1
1.2 關於AOSP 3
1.3 理解Android Binder機製 3
1.3.1 Binder機製簡介 3
1.3.2 整體架構 4
1.3.3 驅動層 7
1.3.4 Binder Framework C++部分 26
1.3.5 Binder Framework Java部分 54
1.3.6 參考資料與推薦讀物 70
第2章 Android係統中的進程管理 72
2.1 關於進程 72
2.2 係統進程與應用進程 73
2.2.1 init進程與init語言 75
2.2.2 Zygote進程 81
2.2.3 system_server進程 84
2.3 應用進程的創建 87
2.3.1 關於應用組件 87
2.3.2 進程與綫程 88
2.3.3 ActivityManagerService 89
2.3.4 Activity與進程創建 92
2.3.5 Service與進程創建 94
2.3.6 ContentProvider與進程創建 96
2.3.7 BroadcastReceiver與進程創建 97
2.3.8 參考資料與推薦讀物 99
2.4 進程的優先級管理 100
2.4.1 優先級的依據 100
2.4.2 優先級的基礎 102
2.4.3 優先級的更新 105
2.4.4 優先級的算法 108
2.4.5 優先級的生效 119
2.4.6 結束語 119
2.4.7 參考資料與推薦讀物 120
2.5 進程與內存的迴收 120
2.5.1 開發者API 121
2.5.2 虛擬機的垃圾迴收 122
2.5.3 開發者的內存迴收 122
2.5.4 Linux OOM Killer 123
2.5.5 LowMemoryKiller 125
2.5.6 進程的死亡處理 126
2.5.7 參考資料與推薦讀物 127
2.6 結束語 127
第3章 Android係統上的虛擬機 129
3.1 Java語言與Java虛擬機 130
3.1.1 Java語言 130
3.1.2 Java虛擬機 130
3.1.3 Java虛擬機實現架構 130
3.1.4 類加載器(Class loader) 132
3.1.5 垃圾迴收 132
3.1.6 結束語 135
3.1.7 參考資料與推薦讀物 135
3.2 Dalvik虛擬機 135
3.2.1 Stack-based VS. Register-based 136
3.2.2 Dalvik Executable(dex)文件 137
3.2.3 Dalvik指令 139
3.2.4 Dalvik啓動過程 144
3.2.5 程序的執行:解釋與編譯 153
3.2.6 Dalvik上的垃圾迴收 156
3.2.7 參考資料與推薦讀物 159
3.3 Android Runtime(ART) 159
3.3.1 ART VS.Dalvik 159
3.3.2 OAT文件格式 162
3.3.3 boot.oat與boot.art 165
3.3.4 Dalvik到ART的切換 166
3.3.5 ART虛擬機的啓動過程 169
3.3.6 內存分配 173
3.3.7 垃圾迴收 178
3.3.8 JIT的迴歸 182
3.3.9 ART虛擬機的演進與配置 185
3.3.10 參考資料與推薦讀物 186
第4章 用戶界麵改進 187
4.1 多窗口功能 187
4.1.1 概述 188
4.1.2 開發者相關 189
4.1.3 內部實現 191
4.1.4 參考資料與推薦讀物 205
4.2 App Shortcuts 206
4.2.1 開發者API 206
4.2.2 內部實現 209
第5章 係統界麵改進 215
5.1 SystemUI整體介紹 215
5.1.1 SystemUI簡介 215
5.1.2 SystemUI的初始化 216
5.1.3 System Bar的初始化 221
5.1.4 參考資料與推薦讀物 224
5.2 System Bar 224
5.3 Notification 234
5.3.1 開發者API 234
5.3.2 通知欄與通知窗口 240
5.3.3 Notification從發送到顯示 243
5.4 Quick Settings 256
5.4.1 開發者API 256
5.4.2 係統實現 260
5.4.3 參考資料與推薦讀物 265
第6章 功耗的改進 266
6.1 Project Volta 266
6.1.1 JobScheduler API 267
6.1.2 電量消耗分析工具 277
6.1.3 在虛擬機層麵減少電池消耗 279
6.1.4 省電模式 280
6.1.5 結束語 281
6.1.6 參考資料與推薦讀物 281
6.2 Doze模式與App StandBy 282
6.2.1 概述 282
6.2.2 瞭解Doze模式 282
6.2.3 瞭解App StandBy 284
6.2.4 對其他用例的支持 284
6.2.5 在Doze模式和App StandBy下進行測試 285
6.2.6 Doze模式的實現 287
6.2.7 App StandBy的實現 293
6.2.8 參考資料與推薦讀物 297
6.3 Android 8.0上的後颱限製 297
6.3.1 概覽 298
6.3.2 後颱服務限製 299
6.3.3 廣播限製 300
6.3.4 係統實現 301
6.3.5 結束語 308
第7章 麵嚮設備管理的改進 310
7.1 多用戶的支持 310
7.1.1 術語 311
7.1.2 支持多用戶 312
7.1.3 多用戶的實現 313
7.1.4 參考資料與推薦讀物 333
7.2 設備管理 334
7.2.1 Device Administration API介紹 334
7.2.2 開發設備管理程序 335
7.3 麵嚮企業環境的Android 339
7.3.1 企業環境解決方案 340
7.3.2 受管理資料(Managed Profiles) 340
7.3.3 受管理資料的內部實現 342
7.3.4 參考資料與推薦讀物 349
第8章 Android係統安全改進 350
8.1 Android係統安全概覽 350
8.2 運行時權限 351
8.2.1 功能介紹 351
8.2.2 新增API 354
8.2.3 參考資料與推薦讀物 370
第9章 圖形係統改進 371
9.1 整體架構 371
9.1.1 Android圖形組件 371
9.1.2 組件 373
9.1.3 Android如何繪製視圖 374
9.1.4 關於硬件加速 376
9.1.5 參考資料與推薦讀物 377
9.2 圖形係統組件 377
9.2.1 Activity與Surface 377
9.2.2 Gralloc 379
9.2.3 BufferQueue 382
9.2.4 Surface 384
9.2.5 參考資料與推薦讀物 388
9.3 Project Butter 388
9.3.1 FPS 389
9.3.2 VSYNC 391
9.3.3 Choreographer與VSYNC 392
9.3.4 Triple Buffer 398
9.3.5 參考資料與推薦讀物 400
9.4 SurfaceFlinger 400
9.4.1 SurfaceFlinger 介紹 401
9.4.2 Hardware Composer 402
9.4.3 SurfaceFlinger的啓動 403
9.4.4 SurfaceFlinger的對外接口 405
9.4.5 VSYNC的傳遞 407
9.4.6 SurfaceFlinger的事件 409
9.4.7 圖層的閤成 411
9.4.8 刷新 412
9.4.9 參考資料與推薦讀物 413
9.5 Vulkan簡介 414
9.5.1 Vulkan組件 414
9.5.2 修改的組件 415
9.5.3 Vulkan API 415
9.5.4 參考資料與推薦讀物 415
第10章 係統架構改進 416
10.1 Project Treble整體介紹 417
10.2 HIDL 420
10.2.1 語法介紹 421
10.2.2 HIDL 與 Binder 422
10.3 ConfigStore HAL 423
10.3.1 概述 423
10.3.2 內部實現 424
10.4 Vendor Native Development Kit 426
10.5 Vendor Interface Object 427
10.5.1 概述 427
10.5.2 Manifest 429
10.5.3 內部實現 429
· · · · · · (
收起)