我正在尝试制作一个可以反编译其他Android应用程序的Android应用程序。 我刚刚开始,但在尝试正确处理 xml 类型的资源(即存储在 res/xml/下的资源)时遇到了困难。
我面临的问题是这些文件包含二进制信息(据我了解,aapt在打包过程中将XML文件转换为二进制文件。)
此外,我知道诸如 apktool 之类的工具或 aapt 本身的转储命令的存在。然而,这些是基于 PC 的工具,而我需要在 Android 应用程序中解码 XML 资源。
那么,有没有办法在Android中做到这一点,或者我需要通过aapt代码并将相关代码移植到Android中?
编辑:我也尝试过 Resources Android API ,使用getXml()函数,返回 XmlResourceParser ,但由于 xml 文件的二进制性质,无法使其工作。
编辑(2):根据唯一的答案,我集成了 ApkParser进入我的代码。它对于大多数部分都适用,但对于某些 XML 文件(例如在framework-res.apk 中找到的 XML 资源),XML 属性的值解码不正确。例如,XML 中的所有 boolean 值都报告为“false”,而实际 XML 中的一些属性也具有“true”值。所以,我猜 ApkParser 有一些限制。
我发现了以下issue该项目在 Github 上,其中分享了我面临的问题的一些方面。
请提出其他替代方案。
最佳答案
有一个 java 库可以满足您的要求。 您可以尝试将其集成到您的应用程序中。
这里:apk-parser - Apk parser lib for java .
或者,尝试联系HootanParsa谁的 MiXplorer 可以轻松做到这一点。
关于java - 在Android中解码二进制Android xml资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494518/