打包的时候Android xml文件会由字符格式(utf-8编码)转换为二进制格式。具体如:http://blog.csdn.net/jiangwei0910410003/article/details/50568487
它有android sdk 提供的打包工具aapt 生成二进制文件,类似class格式,前面4个字节为魔数,表示文件格式。
这些XML资源文件之所要从文本格式编译成二进制格式,是因为:
1. 二进制格式的XML文件占用空间更小(这个地方不一定,比如原来的文件是用utf-8编码一个英文字符占1个字节, 编码后使用utf-16编码,一个英文字符占两个字节,文件反而可能变大)。这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中去,并且会去重。有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。
2. 二进制格式的XML文件解析速度更快。这是由于二进制格式的XML元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高速度。
将XML资源文件从文本格式编译成二进制格式解决了空间占用以及解析效率的问题,但是对于Android资源管理框架来说,这只是完成了其中的一部分工作。Android资源管理框架的另外一个重要任务就是要根据资源ID来快速找到对应的资源。