# 资源索引

用两个例子来说明资源索引的过程和原理,下面 resources.arsc 统称 arsc 文件,classes.dex 统称 dex 文件。

# 应用名称

APK介绍中提到应用名称定义在 AndroidManifest.xml 文件中,其具体是在 application 标签的 label 属性中,但一般它的值只是一个资源 ID,而具体的值在 arsc 文件中。

alt

为什么不直接在这里填入字符串,而是用资源 ID 代替呢?因为一个资源 ID 可以对应多个值,具体使用哪个值则会根据系统环境进行选择。

例如可以设置在中文环境使用「MT管理器」,在英文环境使用「MT Manager」,这样就实现了多国语言支持。

alt

# 布局文件

在 dex 文件中,我们查看某个 Activity 的代码,一般它是通过 setContentView(ID) 来加载布局文件,我们同样可以用上面的办法通过这个 ID 拿到具体的值。

不过我们通过这个 ID 在 arsc 文件中找到的值应该是像 res/layout/activity_main.xml 这样的路径,可以看出布局资源在 arsc 存储的只是文件路径,具体的内容我们还需要去 APK 中找到这个文件并打开。

alt