【问题标题】:How to view AndroidManifest.xml from APK file?如何从 APK 文件中查看 AndroidManifest.xml?
【发布时间】:2011-05-10 15:46:34
【问题描述】:

可以查看Androidmanifest.xml文件吗?

我刚刚将apk 文件的扩展名更改为zip。此zip 文件包含Androidmanifest.xml 文件。但我无法查看Androidmanifest.xml 的内容。它是完全加密的。

如何查看Androidmanifest.xml 文件?

【问题讨论】:

  • 我有一个 APK 文件。我需要查看 Androidmanifest.xml 文件。因为我使用了一个框架。该 APK 文件也使用了相同的框架。所以我需要看看如何从那个 APK 文件中配置 Androidmanifest 文件。

标签: android xml apk android-manifest aapt


【解决方案1】:

是的,您可以查看Android APK 文件的XML 文件。有一个工具可以做到这一点:android-apktool

它是逆向工程的工具 3rd 派对、封闭、二进制 Android 应用

如何在您的 Windows 系统上执行此操作:

  1. Download apktool-install-windows-* file
  2. Download apktool-* file
  3. 解压到您的 Windows 目录

现在将APK 文件也复制到该目录中,并在命令提示符下运行以下命令:

apktool d HelloWorld.apk ./HelloWorld

这将在您的当前目录中创建一个目录“HelloWorld”。在其中您可以找到解密格式的AndroidManifest.xml 文件,您还可以在"HelloWorld/res/layout" 目录中找到其他XML 文件。

HelloWorld.apk 是您的 Android APK 文件。

有关详细信息,请参阅以下屏幕截图:

【讨论】:

  • 这很好,但我想知道如何只查看 AndroidManifest.xml 而无需下载所有这些。它是加密的还是压缩的?
  • @JohnnyLambada:是的,您可以在以下存档工具中打开并查看它:WinRar/WinZip/7Zip,但它没有任何意义,因为它是加密形式。
  • apktool 已弃用。最好参考他们的project homepage 获取最新版本。
  • 我得到:线程“main”中的异常 brut.androlib.AndrolibException:多个资源:在 brut.androlib.res.data.ResConfig.addResource(未知来源)
  • 现在命令已更改为最新版本apktool d your_destination youraApk.apk
【解决方案2】:

Android Studio 现在可以显示这个了。转到 Build > Analyze APK... 并选择您的 apk。然后就可以看到AndroidManifest文件的内容了。

【讨论】:

  • 这个功能是最近添加的,我也想建议这个功能,除非你热衷于使用命令行并且在你的路径中设置了平台工具。
  • 这应该被赞成成为最佳答案,其他方法现在不必要地复杂了。
  • 还有这个内置的命令行版本:stackoverflow.com/a/54874783/89818
【解决方案3】:

aapt d xmltree com.package.apk AndroidManifest.xml

将从指定的 APK 转储 AndroidManifest.xml。它不是 XML 格式的,但您仍然可以阅读它。

aapt(Android Asset Packaging Tool)是Android SDK自带的内置工具。

【讨论】:

    【解决方案4】:

    Google 刚刚发布了一个用于检查 APK(以及许多其他二进制 Android 格式)的跨平台开源工具:

    ClassyShark 是一款适用于 Android 开发人员的独立二进制检查工具。它可以可靠地浏览任何 Android 可执行文件并显示重要信息,例如类接口和成员、dex 计数和依赖项。 ClassyShark 支持多种格式,包括库(.dex、.aar、.so)、可执行文件(.apk、.jar、.class)和所有 Android 二进制 XML:AndroidManifest、资源、布局等。

    安装 8.2 版:

    wget https://github.com/google/android-classyshark/releases/download/8.2/ClassyShark.jar
    

    运行:

    java -jar ClassyShark.jar -open <file.apk>
    

    【讨论】:

    • 这比 Apktool 简单 10000 倍!
    • 可以编辑吗?
    【解决方案5】:

    thread 中,Dianne Hackborn 告诉我们,我们可以使用 aapt 从 AndroidManifest 中获取信息。

    我启动了这个快速的 unix 命令来获取版本信息:

    aapt dump badging my.apk | sed -n "s/.*versionName='\([^']*\).*/\1/p"
    

    【讨论】:

      【解决方案6】:

      您可以使用apkanalyzer,这是与Android SDK 捆绑在一起的APK Analyzer 的命令行版本。只需在 CLI 上执行以下命令:

      /path/to/android-sdk/tools/bin/apkanalyzer manifest print /path/to/app.apk
      

      您只需将/path/to/android-sdk 替换为您的Android SDK 版本的正确路径,并将/path/to/app.apk 替换为您的APK 文件的路径。

      【讨论】:

      • 这应该是公认的答案,因为它不需要从未经验证的来源安装任何东西。
      • 请注意,这似乎不适用于 Windows :( stackoverflow.com/a/54593118/997940
      • 我得到错误:线程“main”中的异常java.lang.IllegalStateException:未设置工具目录属性,请确保您正在执行apkanalyzer,我不知道如何解决它
      • 如果您在 macOS 上,这很可能是您需要的路径:~/Library/Android/sdk/tools/bin/apkanalyzer manifest print &lt;apk&gt;
      【解决方案7】:

      你可以使用这个命令:保存到文件 AndroidManifest.txt

      aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt
      

      【讨论】:

      • ddump 的缩写,这使得这个答案与一年多前发布的this one 相同。
      • 是的,但是这段代码保存在文件&gt; AndroidManifest.txt中。
      • 大声笑,答案是一样的,转储文件并没有什么不同
      • 这是一个更好的书面答案:我跳过了另一个,因为我认为输出是二进制的,但这里很明显 AndroidManifest.txt 将是人类可读的 ASCII。
      【解决方案8】:

      使用axmldec解码AndroidManifest.xml文件:

      axmldec -o output.xml AndroidManifest.xml
      

      axmldec -o output.xml AndroidApp.apk
      

      【讨论】:

      • 这可以通过 Homebrew 轻松安装:brew tap ytsutano/toolboxbrew install axmldec
      • windows下无法识别...
      【解决方案9】:

      Android SDK 构建工具中包含的 Aapt2 可以做到这一点 - 无需第三方工具。

      $(ANDROID_SDK)/build-tools/28.0.3/aapt2 d --file AndroidManifest.xml app-foo-release.apk
      

      从 build-tools v29 开始,您必须添加命令 xmltree:

      $(ANDROID_SDK)/build-tools/29.0.3/aapt2 d xmltree --file AndroidManifest.xml app-foo-release.apk
      

      【讨论】:

      • 这不会输出原始 XML,但如果我只需要查看其中的值而无需提取 APK 或写入临时文件,那就太好了。
      【解决方案10】:

      AXMLParserAPKParser.jar 也可以完成这项工作,您可以查看链接。 AXMLParser

      【讨论】:

      【解决方案11】:

      有一个在线工具可以让你上传一个 APK,它会反编译它,最后让你下载一个包含所有源的 zip,反编译的清单 XML 文件等,所有这些都无需在你的计算机上安装任何程序: http://www.javadecompilers.com/apk

      此外,如果您只想检查一些参数,您可以通过他们的 UI 进行检查

      【讨论】:

      • 8 月开发了一个 APK,11 月没有开发另一个 APK。
      • apktools 似乎没有为我创建带有输出的目录,并且 aapt 没有以 XML 格式显示结果。这个网站就像一个魅力。
      【解决方案12】:

      您还可以使用我的应用程序App Detective 查看您在设备上安装的任何应用程序的清单文件。

      【讨论】:

      • 它可以编辑吗?
      【解决方案13】:

      这是一个旧线程,但我想我会提到,你的手机有 root,你可以使用 root explorer 应用程序直接在手机上查看它。您甚至不必提取它即可查看。

      【讨论】:

        【解决方案14】:

        另一个有用的(基于 Python 的)工具是 Androguard,使用它的 axml 子命令:

        androguard axml my.apk -o my.xml
        

        这会一次性提取和解码应用清单。与 apktool 不同,它不会解压其他任何东西。

        【讨论】:

          【解决方案15】:

          所有这些答案似乎都有点过度设计了!

          1. 只需抓住这个 chrome 扩展:https://chrome.google.com/webstore/detail/apk-downloader/fgljidimohbcmjdabiecfeikkmpbjegm

          2. 使用上述扩展名从 Playstore 下载您想要的 .apk 文件。

          3. .apk上传到此在线工具以获取manifest.xmlhttps://www.sisik.eu/apk-tool

          【讨论】:

          • 我喜欢 3 号门后面的东西!
          【解决方案16】:

          另一种选择是使用 Jadx:https://github.com/skylot/jadx

          只需打开您的 APK 并在树形视图中选择“AndroidManifest.xml”。 它会像那样可读。

          【讨论】:

          • 并编辑它(单个文件)而不提取其他文件?
          【解决方案17】:

          该文件需要反编译(或 deodex 不确定是哪一个)。但这里有另一种方法:

          -Download free Tickle My Android tool on XDA: https://forum.xda-developers.com/showthread.php?t=1633333https://forum.xda-developers.com/showthread.php?t=1633333
          -Unzip
          -Copy APK into \_WorkArea1\_in\ folder
          -Open "Tickle My Android.exe"
          -Theming Menu
          -Decompile Files->Any key to continue (ignore warning)
          -Decompile Files->1->[Enter]->y[Enter]
          -Wait for it to decompile in new window... Done when new window closes
          -Decompiled/viewable files will be here: \_WorkArea3\_working\[App]\
          

          【讨论】:

            猜你喜欢
            • 2018-12-04
            • 2011-01-07
            • 1970-01-01
            • 2011-04-05
            • 1970-01-01
            • 2011-12-10
            • 2019-04-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多