java - 在Android中解码二进制Android xml资源

标签 java android decompiling aapt

我正在尝试制作一个可以反编译其他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/

相关文章:

java - 防止 Eclipse 在调试时移动到代码行

java - 与单生产者模式相比,lmax disruptor 在多生产者模式下太慢

java - 为什么 Kerberos/SPNEGO 身份验证不起作用?

java - 如何从 TCP 服务器向 TCP 客户端发送回复?

android - 建议用户将应用程序 appwidget 放在主屏幕上

Android AsyncTask问题

java - 如何通过 JavaFX 中的场景构建器将 style.css 添加到我的应用程序?

android - 我如何在 Android 市场中为应用程序用户实现推荐计划?

android - 任何库提取android resources.arsc

android - 在我的 android 项目中使用 apktool jar 文件?