android资源文件编译/解析/查找

android资源文件编译/解析/查找

apk安装后资源分布路径

/data/app  

/data/app-lib 

/data/davlik-cache/   

/data/data/packagename/   

/data/system/packages.list   

/data/system/packages.xml   

不觉得奇怪吗? drawable目录在哪里? 编译成二进制后的xml在哪里?

  1. 全盘搜索drawable中的图片文件
    手机是root过的,搜索结果是啥都没有!!
  2. 把/data/app中的目标apk删除
    再次启动目标apk,崩溃了!!
  3. 把目标apk卸载
  4. 重新安装目标apk
  5. 修改/data/app中目标apk的名字
    启动目标apk崩溃,把/data/app中目标apk名字还原,启动目标apk成功.

结论

app是直接通过resources.arsc中的映射然后直接从apk文件中读取资源的.

android中资源文件的加载过程

1. 编译

aapt 根据drawable和xml文件生成resources.arsc
如果是文件比如图片,resources.arsc中会存储id和路径, 如果是字符串则会固化到arsc文件中, xml布局会编译成二进制文件(反编译后打开查看一下).

2. 安装到手机收查找

2.1 加载

resources.arsc文件在启动app的时候被加载到内存中.

**AssetManager** call **ResTable** 

2.2 查找

findViewById(R.id.xxx)

根据id到ResTable中找对应的映射值,如果是图片则直接到/data/app/packagename.apk中提取.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值