我要使用adb安装包含名称如“com.xyz.game”的Android应用。 我想使用shell脚本自动化该过程。这个过程就像是已经安装了app,卸载它(使用命令adb uninstall com.xyz.game)并使用“adb install game.apk”安装,否则简单的“adb install game.apk”。
我怎样才能做到这一点?
答案 0 :(得分:16)
尝试grep pm list packages的结果。
adb shell pm list packages | grep com.xyz.game
如果已安装,您可能会看到结果。
package:com.xyz.game
答案 1 :(得分:15)
[更新2 ]
不使用grep
adb shell pm list packages [your.package.name]
[<强>更新强>
根据下面的(也)正确答案,尝试从pm list packages中获取结果。
adb shell pm list packages | grep com.your.app.package
[<强>原始强>
如果已安装该应用程序,并且您尝试再次安装相同的应用程序,则adb将返回错误 - Failure [INSTALL_FAILED_ALREADY_EXISTS]
。但是,如果要重新安装已安装的应用程序,请使用-r
参数。
例如:
adb install -r game.apk
答案 2 :(得分:13)
无需使用grep。使用以下命令,您只需检查应用程序是否已存在。
运行ADB命令
adb shell pm list packages [your.package.name]
如果已经安装了app,则上面的命令将返回
<强>包:[your.package.name] 强>
否则它不会返回任何内容,即空字符串。
答案 3 :(得分:0)
Android 7.0引入了cmd
(基于新的本机代码)工具,该工具与PackageManager
之类的Android服务进行交互的速度比pm
等基于Java字节码的旧工具快得多。因此,对于最新的Android版本,您应该使用
adb shell pm list packages <package.name.substring>
adb shell cmd package list packages <package.name.substring>