深入剖析 Android 新特性
內容描述
本書對最近幾個版本(5.0 ~ 8.0)的主要新增功能進行整理和解析,本書的重點不僅僅是講解這些新增功能特性的外部行為,而是在結合AOSP的源碼基礎上,解析這些功能特性的內部實現。
任何已有的功能都是固定的,隨著行業的發展,Android系統在未來可能加入的功能是不確定的,只有掌握了閱讀和分析AOSP源碼的能力,才能應對不確定的變化,並具備今後能夠自行研究Android系統的能力。
目錄大綱
第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
作者介紹
強波,江蘇南京人,現居住在浙江杭州。
就職於阿里巴巴集團-OS事業部-核心系統部門。
在阿里,我的花名叫做”未悔“,花名取自《離騷》:”亦餘心之所善兮,雖九死其尤未悔“。
多年智能操作系統開發經驗,熱愛鑽研技術,也熱愛分享技術。
現在負責AliOS運行時環境的研究與開發,參與過手機、汽車、平板、TV等多種智能設備的研發工作。
個人博客:http://qiangbo.space。