整体架构
image.png通过AAPT(Android Assert Package Tool)对资源打包,打包前,大部分XML会被编译成二进制,这样可以减小体积与优化解析速度
为了快速定位资源
- 给每个非Asset资源一个id,他们定义在R.java
- 生成resources.arsc,即资源索引表,根据id描述资源相关配置
所以着重关注
- XML资源编译过程
- R.java生成过程
- resources.arsc生成过程(AAPT在编译前,会创建资源表ResourceTable,根据ResourceTable生成resources.arsc)
AAPT执行过程
image.png1、解析AndroidManifest.xml
2、添加被引用资源包
3、创建AaptAssets,收集资源文件
4、收集到的资源增加到ResourceTable中
5、编译values资源
6、给Bag资源分配id
7、编译XML资源文件:解析XML、赋予属性资源id、解析属性值、XML转二进制、写入资源id、字符串替换
8、生成资源符号
9、生成resources.arsc
10、编译AndroidManifest.xml
11、生成R.java
12、打包APK
后记
有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改
网友评论