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

如何提取APK的包名?


当前回答

一个简单的解决方案是Open Android Studio -> Build -> Analyze Apk…浏览并选择APK,现在你可以找到包的名称,你可以阅读。

其他回答

一个简单的解决方案是Open Android Studio -> Build -> Analyze Apk…浏览并选择APK,现在你可以找到包的名称,你可以阅读。

aapt dump badging <path-to-apk> | grep package:\ name

在Android设备上安装apk。然后

您可以启动adb shell并执行PM list packages -f,这将显示每个已安装apk的包名称。

这是从 找到包名称为Android应用程序使用意图启动市场应用程序从网络。

由于在Android文档中提到AAPT已被弃用,在Linux中使用AAPT2命令获取包名如下:

./aapt2 dump packagename <path_to_apk> ./aapt2 dump

因为我使用的是旧版本的Gradle构建,所以我不得不下载一个更新版本的AAPT2,就像这里提到的:

从谷歌Maven下载AAPT2

使用构建工具在我的sdk - 25.0.3, 26.0.1和27.0.3,执行aapt2命令显示一个错误:无法打开'packagename':没有这样的文件或目录。这就是我选择更新版本的AAPT2的原因。

对于linux,我使用3.3.0-5013011。

下面的bash脚本将显示包名称和主活动名称:

apk_package.sh

package=$(aapt dump badging "$*" | awk '/package/{gsub("name=|'"'"'","");  print $2}')
activity=$(aapt dump badging "$*" | awk '/activity/{gsub("name=|'"'"'","");  print $2}')
echo
echo "   file : $1"
echo "package : $package"
echo "activity: $activity"

像这样运行它:

apk_package.sh /path/to/my.apk