我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取APK的包名?
我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取APK的包名?
当前回答
我认为在Linux中只提取包名的最好和最简单的方法是
aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*/\1/"
解释:
AAPT提取APK信息 Grep“package”只保留一行关于包的信息 让sed只使用以下正则表达式将整行替换为包名:package: name='([a-z0-9.]*)'。*并替换为第一个(也是唯一一个)匹配组。
其他回答
你可以从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}'
当然,您可以使用任何其他工具来进行筛选。
下面的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
如果你正在看谷歌播放,想知道它的包名,那么你可以看看url或地址栏。您将得到包名称。这里com.landshark.yaum是包名
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
你可以在模拟器上安装Package_Name_Viewer.apk,接下来你可以在模拟器上看到所有已安装应用程序的包名。
我也尝试了反编译的东西,它的工作,但最近我发现了最简单的方法:
从Appium网站下载安装Appium 打开Appium->Android设置,选择目标apk文件。然后你得到你想要的一切,包信息,活动信息。