我需要得到一个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用户有所帮助!

其他回答

根据@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用户有所帮助!

你可以在模拟器上安装Package_Name_Viewer.apk,接下来你可以在模拟器上看到所有已安装应用程序的包名。

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

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

在Mac:

方式1:

zgong$ /Users/zgong/Library/Android/sdk/build-tools/29.0.3/aapt dump badging ~/Downloads/NonSIMCC-151-app-release-signed.apk
package: name='com.A.B' versionCode='2020111801' versionName='1.0.40' compileSdkVersion='29' compileSdkVersionCodename='10'
sdkVersion:'24'
targetSdkVersion:'29'
......

方式2:

/Users/zgong/Library/Android/sdk/build-tools/29.0.3/aapt2 dump packagename ~/Downloads/NonSIMCC-151-app-release-signed.apk
com.A.B

你可以通过以下方式获取包名:

packageManager.getPackageArchiveInfo(apkFilePath, 0)?.packageName