我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取APK的包名?
我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取APK的包名?
当前回答
我也尝试了反编译的东西,它的工作,但最近我发现了最简单的方法:
从Appium网站下载安装Appium 打开Appium->Android设置,选择目标apk文件。然后你得到你想要的一切,包信息,活动信息。
其他回答
要在批处理脚本中使用它,让脚本只返回包名是很方便的(例如,当你有APK时卸载应用程序)。
下面是我使用的脚本:
# extract the android package id from a built apk file
# usage ./getPackageName.sh <path-to-apk>
line=`aapt dump badging "$1" | grep package:\ name`
# above returns:
# package: name='com.calvium.myapp' versionCode='1' versionName='1.0'
if [[ $line =~ name=\'(.+)\'\ versionCode ]]; then
echo ${BASH_REMATCH[1]}
else
echo "Failed to find package name"
exit 1
fi
可参考要旨
你可以这样写:
adb卸载`./getPackageName.sh file.apk`
根据@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}"
下面的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
如果你使用MS Notepad打开AndroidManifest.xml,搜索短语包,你会发现以下内容:
package manifest $xxx.xxxxxxx.xxxxxxx |
其中xxx.xxxxxxx.xxxxxxx是您的包名,只是在每个字符后面加上一个空格。
当您没有安装任何特定的工具时,这是一种有用的方法。