【Android】【资源编译、打包】

整体架构

【Android】【资源编译、打包】_第1张图片

通过AAPT(Android Assert Package Tool)对资源打包,打包前,大部分XML会被编译成二进制,这样可以减小体积与优化解析速度
为了快速定位资源

  1. 给每个非Asset资源一个id,他们定义在R.java
  2. 生成resources.arsc,即资源索引表,根据id描述资源相关配置

所以着重关注

  1. XML资源编译过程
  2. R.java生成过程
  3. resources.arsc生成过程(AAPT在编译前,会创建资源表ResourceTable,根据ResourceTable生成resources.arsc)

【Android】【资源编译、打包】_第2张图片

 

AAPT执行过程

【Android】【资源编译、打包】_第3张图片

1、解析AndroidManifest.xml
2、添加被引用资源包
3、创建AaptAssets,收集资源文件
4、收集到的资源增加到ResourceTable中
5、编译values资源
6、给Bag资源分配id
7、编译XML资源文件:解析XML、赋予属性资源id、解析属性值、XML转二进制、写入资源id、字符串替换
8、生成资源符号
9、生成resources.arsc

【Android】【资源编译、打包】_第4张图片

10、编译AndroidManifest.xml
11、生成R.java
12、打包APK

 

后记

有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改

 

学习自

https://blog.csdn.net/luoshengyang/article/details/8744683

你可能感兴趣的:(【Android】【资源编译、打包】)