解码Android中的二进制Android xml资源

时间:2017-06-12 08:15:38

标签: java android decompiling aapt

我正在尝试制作可以反编译其他Android应用的Android应用。 我刚刚开始,但我在尝试正确处理xml类型的资源时遇到困难,即存储在res / xml /下的资源。

我面临的问题是这些文件包含二进制信息(据我所知,aapt在打包过程中将XML文件转换为二进制文件。)

另外,我知道有像apktool这样的工具,或者aapt本身的dump命令。但是,这些是基于PC的工具,而我需要在Android应用程序中解码XML资源。

那么,有没有办法在Android中实现,或者我是否需要通过aapt代码并将相关代码移植到Android?

编辑:我还尝试了Resources Android API,使用了getXml()函数,该函数返回XmlResourceParser,但由于xml的二进制特性而无法使其工作文件。

编辑(2):根据单独答案,我将ApkParser集成到我的代码中。它适用于大多数部分,但对于某些XML文件,例如framework-res.apk中的XML资源,XML属性的值被错误地解码。例如,XML中的所有布尔值都报告为“false”,而实际的XML也有一些具有“true”值的属性。所以,我猜ApkParser有一些限制。

我在Github上为该项目找到了以下issue,该项目分享了我所遇到的问题的某些方面。

请建议其他替代方案。

1 个答案:

答案 0 :(得分:0)

有一个java库可以满足您的要求。 您可以尝试在应用中集成它。

此处:apk-parser - Apk parser lib for java

或者,尝试与 MiXplorer 轻松完成的HootanParsa联系。