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

时间:2012-07-06 17:53:57

标签: android xml binary

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

3 个答案:

答案 0 :(得分:8)

使用Android打包工具(aapt.exe)

计算出来
aapt.exe package -f -m -J src -M AndroidManifest.xml -S res -A assets  -0 "" -I android.jar -F MyApp.apk

根据docs

-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文件。不理想,但它至少起作用

答案 1 :(得分:2)

xml2axml.jar

经过大量研究,我在Github上找到了一个工具,该工具可让我们将axml(二进制AndroidManifest.xml)转换为xml(Readable AndroidManifest.xml),反之亦然。

从发布页面here下载该工具的 int simpleArraySum(std::vector<int> ar) { int sum=0; for (int i : ar) { sum += i; } return sum; } 文件,然后您可以使用这些命令对axml进行解码和对xml文件进行编码。

将xml文件编码为axml:

xml2axml.jar

将axml文件解码为xml:

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

答案 2 :(得分:1)

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

  

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