Android_应用程序资源的编译和打包过程分析
2013-08-29 14:15
211 查看
Android应用程序资源的编译和打包过程分析:
在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件。XML资源要二进制格式,是因为:二进制格式的XML文件占用空间更小。这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中去,并且会去重。有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。二进制格式的XML文件解析速度更快。这是由于二进制格式的XML元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高速度。
为了使得一个应用程序能够在运行时同时支持不同的大小和密度的屏幕,以及支持国际化,即支持不同的国家地区和语言,Android应用程序资源的组织方式有18个维度,每一个维度都代表一个配置信息,从而可以使得应用程序能够根据设备的当前配置信息来找到最匹配的资源来展现在UI上.
18个维度,两个额外操作: 赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中。生成一个resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。
dex文件是将所需的Class文件重新打包,打包的规则不是简单的压缩,而是完全对Class文件内部的各种函数表/变量表等进行优化,并产生一个dex文件。加载它需要特殊的类装载器,DexClassLoader。
在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件。XML资源要二进制格式,是因为:二进制格式的XML文件占用空间更小。这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中去,并且会去重。有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。二进制格式的XML文件解析速度更快。这是由于二进制格式的XML元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高速度。
为了使得一个应用程序能够在运行时同时支持不同的大小和密度的屏幕,以及支持国际化,即支持不同的国家地区和语言,Android应用程序资源的组织方式有18个维度,每一个维度都代表一个配置信息,从而可以使得应用程序能够根据设备的当前配置信息来找到最匹配的资源来展现在UI上.
18个维度,两个额外操作: 赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中。生成一个resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。
dex文件是将所需的Class文件重新打包,打包的规则不是简单的压缩,而是完全对Class文件内部的各种函数表/变量表等进行优化,并产生一个dex文件。加载它需要特殊的类装载器,DexClassLoader。
相关文章推荐
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android:android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析 (转自老罗的博客)
- Android应用程序资源的编译和打包过程分析
- 老罗的“Android应用程序资源的编译和打包过程分析”一文的一点总结
- Android应用程序资源的编译和打包过程分析
- Android应用程序资源的编译和打包过程分析