如何将XML转换为Android二进制XML

5

我正在创建一个能够部署Android应用的软件,但是apk文件中包含的AndroidManifest位于自定义二进制XML格式中。我想知道是否有工具可以让我将自己的AndroidManifest.xml文件添加到apk中(在添加时转换为AXML),或者该格式是否在任何地方有解释,以便我可以创建自己的转换器。

3个回答

9
通过使用Android打包工具(aapt.exe)解决了这个问题。
aapt.exe package -f -m -J src -M AndroidManifest.xml -S res -A assets  -0 "" -I android.jar -F MyApp.apk

根据文档所述:
-f
    force overwrite of existing files

-m
    make package directories under location specified by -J

-J
    specify where to output R.java resource constant definitions

-M
    specify full path to AndroidManifest.xml to include in zip

-S
    directory in which to find resources. Multiple directories will be scanned and the first match found (left to right) will take precedence

-A
    additional directory in which to find raw asset files

-0
    specifies an additional extension for which such files will not be stored compressed in the .apk. An empty string means to not compress any files at all.

-I
    add an existing package to base include set

-F
    specify the apk file to output

这个功能将一个普通的XML清单打包成二进制XML并插入到APK中。

不幸的是,如果在清单文件中引用了资源和资产,则需要这些资源和资产已经存在。我还必须将任何其他数据添加回APK文件中。不是最理想的解决方案,但至少能够工作。


3

xml2axml.jar

经过大量研究,我在Github上找到了一个工具,可以将axml(二进制AndroidManifest.xml)转换为xml(可读的AndroidManifest.xml)以及相反的过程。 从这里的发布页面下载该工具的xml2axml.jar文件,然后使用以下命令对axml和xml文件进行解码和编码。 将xml文件编码为axml:
java -jar xml2axml e [AndroidManifest-readable-in.xml] [AndroidManifest-bin-out.xml]

将axml文件解码为xml文件:

java -jar xml2axml d [AndroidManifest-bin-in.xml] [AndroidManifest-readable-out.xml]

抱歉兄弟,就像我之前说的那样,当我找到解决方案时我很匆忙。但是我已经添加了一些帮助。如果你在这个过程中仍然卡住了,请告诉我。我随时都可以并愿意提供帮助。 - Talha Asghar

2

请查看 'apktool': http://ibotpeaches.github.io/Apktool/

它可以将资源解码为几乎原始的形式,并在进行一些修改后重新构建它们; 它使得逐步调试smali代码成为可能。此外,由于具有类似项目文件结构和自动化某些重复任务的功能,因此使用应用程序更加容易,例如构建apk等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接