手把手教你解析Resources.arsc
Posted beyond702
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你解析Resources.arsc相关的知识,希望对你有一定的参考价值。
一、前言
对于APK里面的Resources.arsc文件大家应该都知道是干什么的(不知道的请看我的另一篇文章Android应用程序资源文件的编译和打包原理),它实际上就是App的资源索引表。下面我会结合实例对它的格式做一下剖析,读完这篇文章应该能够知道Resources.arsc的格式,并可以从二进制的文件中查找到资源的相关信息,或者根据资源的id可以定位到二进制文件中的位置。不过本人对android资源文件的有一些相关概念并不是特别熟悉,所以文章中有很多地方也并不明白,如有错误欢迎指正!
二、R.java文件及资源ID
首先先介绍一下我们在Android应用开发过程中程序中用的资源的id,相信大家都知道R.java文件,这个是通过aapt对资源文件进行编译生成的资源id文件,这样我们程序中使用资源文件更加方便。举例我们先看一下原始的资源文件res/values/strings.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Cert</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
以上是关于手把手教你解析Resources.arsc的主要内容,如果未能解决你的问题,请参考以下文章
Android 安装包优化资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
Android 安装包优化资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
Android 安装包优化资源打包配置 ( resources.arsc 资源映射表 | 配置国际化资源 )
Android 安装包优化资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )