Apk解析之 —— resource.arsc

本文详细探讨了resource.arsc文件的结构,包括头部信息、资源索引表、字符串资源池、Package数据块、类型规范数据块和资源类型项数据块。通过对这些部分的解析,我们可以理解资源的配置差异、资源ID的生成,并能从public.xml中找到资源值。
摘要由CSDN通过智能技术生成

本篇解析resource.arsc文件,参考文章:Reference
项目源码:ApkParser

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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值