获取.apk文件的主程序包名称

时间:2014-04-16 08:03:17

标签: java android command-line android-emulator adb

我必须使用命令行在Android模拟器上启动应用程序。因为我知道adb命令有一个方法;

adb shell am start -a android.intent.action.MAIN -n com.example.myApplication

但是我必须在执行此命令之前找到应用程序包名称,所以任何人都可以帮我找到包名称,或者在模拟器上运行apk的任何替代解决方案

4 个答案:

答案 0 :(得分:6)

在Linux上,只需使用此命令获取包名称:

aapt dump badging {apk-file.apk} | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g

获取main(启动器)活动是类似的:

aapt dump badging {apk-file.apk} | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g

对于我的个人用法,我编写了一个名为apkinfo.sh的shell脚本,如下所示:

#!/bin/bash package=`aapt dump badging $* | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g` activity=`aapt dump badging $* | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g` echo echo package : $package echo activity: $activity

并使用如下:

./apkinfo.sh {path-to-apk-file.apk}

答案 1 :(得分:3)

aapt dump badging <path-to-apk>

答案 2 :(得分:1)

这是我在我的一个项目中使用的内容,在shell脚本中。

apk= #apk path
package=`.//aapt dump badging $apk | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g`
echo $package
adb install $apk

如果您只想输入cmd提示符,那么它将是

.//aapt dump badging ***apk relative path*** | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g

应该有用。

答案 3 :(得分:0)

提取apk文件并重建清单文件,然后通过解析xml清单文件,您可以找到主活动包名称。 请参考this link进行解析,并引用this link来解压缩apk文件。