我正在创建一个能够部署Android应用的软件,但是apk文件中包含的AndroidManifest位于自定义二进制XML格式中。我想知道是否有工具可以让我将自己的AndroidManifest.xml文件添加到apk中(在添加时转换为AXML),或者该格式是否在任何地方有解释,以便我可以创建自己的转换器。
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文件中。不是最理想的解决方案,但至少能够工作。
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]
请查看 'apktool': http://ibotpeaches.github.io/Apktool/
它可以将资源解码为几乎原始的形式,并在进行一些修改后重新构建它们; 它使得逐步调试smali代码成为可能。此外,由于具有类似项目文件结构和自动化某些重复任务的功能,因此使用应用程序更加容易,例如构建apk等。