所以,如果你曾经" poked"在Android APK
存档中,您可能知道其中的清单(AndroidManifest.xml
文件)不是以明文形式存储,而是以不可读的二进制格式存储。
但是今天我注意到在AAR
档案(又名:Android库文件)中,清单不是"编码的"实际上是纯文本,完全可读。
我假设这是为了便于包含在项目和后续编译中?
但我真正的问题是:我可以指望吗?即:我可以指望AAR
档案中的内容是可读的,而不是以二进制格式编码{ {1}}档案使用?
我之所以这样说:我有一个基于Gradle的自定义构建系统,它根据输入配置扫描并包含APK
个库,如果我知道100个,我可以使它更简单我可以直接从AAR
档案中读取清单,而不必像我现在那样使用AAR
工具解析包。
答案 0 :(得分:1)
是的,你可以信赖它。
如果您考虑编码格式包含的内容,您会发现这不适合图书馆。例如,编码格式用索引号替换文本字符串引用 - 但只有当您知道与apk中所有字符串关联的数字时才能这样做。根据定义,库不是完整的apk,因此在知道组合资源集之前,不能分配给资源项的数字。
如果查看许多aar文件中的清单文件,您会看到它们包含AOSP版权标题作为xml注释。注释是在转换为apks中使用的二进制编码格式时被丢弃的另一条信息,虽然较少的交易破坏者,但在图书馆中保留此信息可能是合法的。
请注意,不仅仅是在Android文件中仍然未编码的AndroidManifest文件 - 所有其他xml资源文件仍然未编码,原因与上述类似。