我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取APK的包名?
我需要得到一个Android APK的包名。我已经尝试解压缩APK和读取AndroidManifest.xml文件的内容,但它似乎不是一个文本文件。
如何提取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用户有所帮助!
其他回答
一个简单的解决方案是Open Android Studio -> Build -> Analyze Apk…浏览并选择APK,现在你可以找到包的名称,你可以阅读。
aapt dump badging <path-to-apk> | grep package:\ name
有一个非常简单的方法,如果你的智能手机上已经准备好了APK。只要使用这些应用程序之一:
包名称查看器应用程序
如果你想读取应用中典型APK文件的包名,有一个简单的方法来分析PackageInfo:
fun getAPKPackageName(apkFile: File?): String? {
if (apkFile == null || !apkFile.isFile || !apkFile.exists()) return null
val apkFilePath = apkFile.absolutePath
if (apkFilePath.isNullOrEmpty()) return null
val packageManager = App.context.packageManager ?: return null
val packageInfo = packageManager.getPackageArchiveInfo(apkFilePath, 0) ?: return null
return packageInfo.packageName
}
下面的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