整體架構(gòu)
通過AAPT(Android Assert Package Tool)對(duì)資源打包,打包前窖铡,大部分XML會(huì)被編譯成二進(jìn)制疗锐,這樣可以減小體積與優(yōu)化解析速度
為了快速定位資源
- 給每個(gè)非Asset資源一個(gè)id,他們定義在R.java
- 生成resources.arsc费彼,即資源索引表滑臊,根據(jù)id描述資源相關(guān)配置
所以著重關(guān)注
- XML資源編譯過程
- R.java生成過程
- resources.arsc生成過程(AAPT在編譯前,會(huì)創(chuàng)建資源表ResourceTable箍铲,根據(jù)ResourceTable生成resources.arsc)
AAPT執(zhí)行過程
1雇卷、解析AndroidManifest.xml
2、添加被引用資源包
3颠猴、創(chuàng)建AaptAssets关划,收集資源文件
4、收集到的資源增加到ResourceTable中
5翘瓮、編譯values資源
6贮折、給Bag資源分配id
7、編譯XML資源文件:解析XML资盅、賦予屬性資源id调榄、解析屬性值、XML轉(zhuǎn)二進(jìn)制律姨、寫入資源id振峻、字符串替換
8、生成資源符號(hào)
9择份、生成resources.arsc
10扣孟、編譯AndroidManifest.xml
11、生成R.java
12荣赶、打包APK
后記
有什么寫得錯(cuò)誤凤价、讓人費(fèi)解或遺漏的地方,希望可以不吝賜教拔创,我會(huì)馬上更改