# 资源索引
用两个例子来说明资源索引的过程和原理,下面 resources.arsc 统称 arsc 文件,classes.dex 统称 dex 文件。
# 应用名称
APK介绍中提到应用名称定义在 AndroidManifest.xml 文件中,其具体是在 application 标签的 label 属性中,但一般它的值只是一个资源 ID,而具体的值在 arsc 文件中。
为什么不直接在这里填入字符串,而是用资源 ID 代替呢?因为一个资源 ID 可以对应多个值,具体使用哪个值则会根据系统环境进行选择。
例如可以设置在中文环境使用「MT管理器」,在英文环境使用「MT Manager」,这样就实现了多国语言支持。
# 布局文件
在 dex 文件中,我们查看某个 Activity 的代码,一般它是通过 setContentView(ID) 来加载布局文件,我们同样可以用上面的办法通过这个 ID 拿到具体的值。
不过我们通过这个 ID 在 arsc 文件中找到的值应该是像 res/layout/activity_main.xml
这样的路径,可以看出布局资源在 arsc 存储的只是文件路径,具体的内容我们还需要去 APK 中找到这个文件并打开。