如何从 APK 文件中查看 AndroidManifest.xml?

Posted

技术标签:

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

可以查看androidmanifest.xml文件吗?

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

如何查看Androidmanifest.xml 文件?

【问题讨论】:

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

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

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

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

    Download apktool-install-windows-* file Download apktool-* file 解压到您的 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文件的内容了。

【讨论】:

这个功能是最近添加的,我也想建议这个功能,除非你热衷于使用命令行并且在你的路径中设置了平台工具。 这应该被赞成成为最佳答案,其他方法现在不必要地复杂了。 还有这个内置的命令行版本:***.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 :( ***.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

【讨论】:

该工具已多年未更新。 Google 刚刚在 2016 年 11 月发布了Android binary inspection tool。【参考方案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】:

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

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

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

    .apk上传到此在线工具以获取manifest.xml:https://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]\

【讨论】:

以上是关于如何从 APK 文件中查看 AndroidManifest.xml?的主要内容,如果未能解决你的问题,请参考以下文章

在 AVD 模拟器中如何查看 sdcard 文件夹并将 APK 安装到 AVD?

上传图片到apk

从 .xml 文件中获取原始维度

如何从 Android 中的 apk 文件中获取源代码? [复制]

安卓手机如何打开.apk文件?

Android Apk的反编译和加密