arsc文件结构
arsc文件的结构图,所有的resource资源类型都定义在AOSP的frameworks\base\include\androidfw\ResourceTypes.h
头文件中。
一、头部信息
Resources.arsc文件格式是由一系列的chunk构成,每一个chunk均包含如下结构的ResChunk_header,用来描述这个chunk的基本信息:
字段名 | 含义 | 长度 |
---|---|---|
type | 当前这个chunk的类型 | 2字节 |
headerSize | 当前这个chunk的头部大小 | 2字节 |
size | 当前这个chunk的大小 | 4字节 |
二、资源索引表的头部信息
字段名 | 含义 | 长度 |
---|---|---|
header | 标准的Chunk头部信息格式 | 8字节:0x0002 |
packageCount | 被编译的资源包的个数,Apk中可以包含多个资源包,默认就1个 | 4字节 |
三、资源项的值字符串资源池
紧跟着资源索引表头部的是资源项的值字符串资源池,这个字符串资源池包含了所有的在资源包里面所定义的资源项的值字符串,字符串资源池头部的结构如下:
字段名 | 含义 | 长度 |
---|---|---|
header | 标准的Chunk头部信息格式 | 8字节:0x0001 |
stringCount | 字符串的个数 | 4字节 |
styleCount | 字符串样式的个数 | 4字节 |
flags | 字符串的属性,可取值包括0x000(UTF-16),0x001(字符串经过排序)、0X100(UTF-8)和他们的组合值 | 4字节 |
stringsStart | 字符串内容块相对于当前Chunk头部的距离 | 4字节*stringCount |
stylesStart | 字符串样式块相对于当前Chunk头部的距离 | 4字节*styleCount |
stringOffsetArray |