【问题标题】:How to convert XML to Android Binary XML如何将 XML 转换为 Android 二进制 XML
【发布时间】:2020-04-19 00:52:26
【问题描述】:

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

【问题讨论】:

    标签: android xml binary


    【解决方案1】:

    使用 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 文件。不理想,但至少可以工作

    【讨论】:

      【解决方案2】:

      xml2axml.jar

      经过大量研究,我在 Github 上找到了一个工具,它允许我们将 axml (Binary AndroidManifest.xml) 转换为 xml (Readable AndroidManifest.xml),反之亦然。

      从发布页面here下载该工具的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]
      

      【讨论】:

      • 对不起兄弟,正如我之前所说,当我找到解决方案时,我很着急。但我增加了一些帮助。让我知道您是否仍被困在此过程中的某个地方。我随时待命并愿意提供帮助。
      【解决方案3】:

      查看“apktool”: http://ibotpeaches.github.io/Apktool/

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-11
        • 2021-12-03
        • 1970-01-01
        • 2018-06-19
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        相关资源
        最近更新 更多