如何从 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 <apk>
【参考方案7】:
你可以使用这个命令:保存到文件 AndroidManifest.txt
aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt
【讨论】:
d
是dump
的缩写,这使得这个答案与一年多前发布的this one 相同。
是的,但是这段代码保存在文件> 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/toolbox
brew 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】:AXMLParser 和 APKParser.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?