我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。

如何提取APK的包名?


当前回答

你可以从APK中提取AndroidManifest.xml,删除所有NULL字节,跳过所有内容直到字符串'manifest'之后,然后你就在一个长度字节后面跟着包名(以及它后面的内容)。对于困难的任务,我使用强大的GEMA工具,因此命令看起来像这样:

7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{$1};$2}'

当然,您可以使用任何其他工具来进行筛选。

其他回答

另一个解决方案是使用aapt列表,并使用sed来解析它:

aapt list -a $PATH_TO_YOUR_APK | sed -n "/^包组[^s]/s/.*name=//p"

根据@hackbod的回答…但与窗户有关。

aapt命令位于Android\SDK\build-tools\version。 如果你需要更多关于什么是appt命令(Android资产打包工具)的信息,请阅读https://stackoverflow.com/a/28234956/812915

aapt的dump子命令用于显示包中各个元素或部分的值:

apt转储标记<path-to-apk>

如果只希望看到package: name info这一行,请使用findstr

apt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"

希望对其他windows用户有所帮助!

一个非常简单的方法是使用apkanalyzer。

apkanalyzer manifest application-id "${_path_to_apk}"

你可以使用分析APK…在Android Studio的Build菜单中,它将在新窗口的顶部显示包的名称。

由于我无法用编辑器在.apk文件中找到包名(如上所述),我检查了我已经安装的应用程序“ES Datei资源管理器”/“ES文件资源管理器”(免费版本)中的功能。 在此工具中,包名称将正确显示。 因为我认为手机上不应该缺少一个好的文件资源管理器,我建议使用这个工具(如果你已经在手机上安装了apk,并且必须知道包的名称)。