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

如何提取APK的包名?


当前回答

如果你正在看谷歌播放,想知道它的包名,那么你可以看看url或地址栏。您将得到包名称。这里com.landshark.yaum是包名

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd

其他回答

程序性的回答

如果你需要用编程的方式来做这件事,这比把答案输入你的大脑要复杂一些。我有一个脚本,我用来签署我们所有的应用程序,但每个使用不同的密钥。这里有两种方法来获得包名作为输出,这样你就可以把它放在一个变量中或做任何你需要的事情。

示例输出:com.example.appname(仅此而已)

需求

aapt - Android资产打包工具,部分SDK工具下载

解决方案1

使用awk指定'作为字段分隔符,搜索包含package: name=的行,并只打印该行中的第二个“字段”:

aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'

这种方法的一个缺点是它依赖于apapt以相同的顺序输出包信息字段:

package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'

我们没有从开发人员那里得到维持这种格式的承诺。

解决方案2

使用awk指定“”作为字段分隔符,搜索包含package=的行,并只打印该行中的第二个“字段”:

aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'

这个方法的一个缺点是它只在输出的Android Manifest:部分依赖apapt to output package=。我们没有从开发人员那里得到维持这种格式的承诺。

解决方案3

用apktool d展开apk文件,读取AndroidManifest.xml。

这将是最好的方法,但AndroidManifest.xml是一个二进制文件,我看到的所有SO答案转换为文本不工作。(使用apktool d而不是简单的解压缩应该为你做到这一点,但它没有。)请评论,如果你有解决这个问题的办法

如果你正在看谷歌播放,想知道它的包名,那么你可以看看url或地址栏。您将得到包名称。这里com.landshark.yaum是包名

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd

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

packageManager.getPackageArchiveInfo(apkFilePath, 0)?.packageName

在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

由于我无法用编辑器在.apk文件中找到包名(如上所述),我检查了我已经安装的应用程序“ES Datei资源管理器”/“ES文件资源管理器”(免费版本)中的功能。 在此工具中,包名称将正确显示。 因为我认为手机上不应该缺少一个好的文件资源管理器,我建议使用这个工具(如果你已经在手机上安装了apk,并且必须知道包的名称)。