整體架構(gòu)

image.png
通過AAPT(Android Assert Package Tool)對資源打包,打包前,大部分XML會被編譯成二進制,這樣可以減小體積與優(yōu)化解析速度
為了快速定位資源
- 給每個非Asset資源一個id,他們定義在R.java
- 生成resources.arsc,即資源索引表,根據(jù)id描述資源相關配置
所以著重關注
- XML資源編譯過程
- R.java生成過程
- resources.arsc生成過程(AAPT在編譯前,會創(chuàng)建資源表ResourceTable,根據(jù)ResourceTable生成resources.arsc)

image.png
AAPT執(zhí)行過程

image.png
1、解析AndroidManifest.xml
2、添加被引用資源包
3、創(chuàng)建AaptAssets,收集資源文件
4、收集到的資源增加到ResourceTable中
5、編譯values資源
6、給Bag資源分配id
7、編譯XML資源文件:解析XML、賦予屬性資源id、解析屬性值、XML轉(zhuǎn)二進制、寫入資源id、字符串替換
8、生成資源符號
9、生成resources.arsc

image.png
10、編譯AndroidManifest.xml
11、生成R.java
12、打包APK
后記
有什么寫得錯誤、讓人費解或遺漏的地方,希望可以不吝賜教,我會馬上更改