android 在一个内置的apk中,res文件夹和arsc文件之间的主要区别是什么?

carvr3hs  于 2022-11-20  发布在  Android
关注(0)|答案(1)|浏览(321)

当我构建一个apk时,例如构建一个空白的Android Studio - Phone和Tablet/Basic Activity项目,并将said apk作为zip打开时,我在那里看到了几个东西。我明白什么是什么,我一直认为aapt创建了arsc文件,其中包含转换为更好优化的二进制格式的资源,这似乎仍然有效...然而,我不完全明白,什么进入了APK内的res文件夹.

我的直觉告诉我,只有可公开访问的资源才保留在res文件夹中,而仅“内部”使用的任何资源都将进入arsc文件。(例如,我希望exported=“true”Activity的布局进入res文件夹)然而,我还没有真正找到对此的任何确认。
有人能告诉我哪些资源确切地放在哪里吗?它们是否可能重复?

ekqde3dh

ekqde3dh1#

  • aapt* 对 res 目录执行三项操作。

它基于整个目录生成 R.java 源文件,该文件包含每个资源项到单个ID的Map。应用程序在运行时将使用这些资源ID访问资源。R.java 包含在Java/Kotlin编译过程中。

  • res/value* 子目录--包含字符串、样式、颜色等的值(请参阅Android开发文档)--被编译到 resources.arsc 文件中。这基本上是一个此类值的表,使其在运行时访问它们更有效。

最后,res 目录--但没有 res/value,其内容现在可以在 resources.arsc 中找到,因此没有重复--被原样打包到APK文件中。
有关APK结构和构建流程的更多信息,请访问Michael Zent的Mobile Development Site

相关问题