簡體   English   中英

Android:如何知道是否已經使用 adb 在 android 設備中安裝了任何應用程序?

[英]Android: How to Know if any application is already installed in android device using adb?

我必須使用 adb 安裝一個包名稱如“com.xyz.game”的 android 應用程序。 我想使用 shell 腳本自動化這個過程。 這個過程就像已經安裝了應用程序,卸載它(使用命令 adb uninstall com.xyz.game)並使用“adb install game.apk”安裝,否則簡單的“adb install game.apk”。

我怎樣才能做到這一點?

[更新 2 ]

不使用grep

adb shell pm list packages [your.package.name]以下答案中所述

[更新]

根據下面的(也)正確答案,嘗試 grep 來自 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

嘗試 grep 來自 pm list packages 的結果。

adb shell pm list packages | grep com.xyz.game

如果已經安裝,您可能會看到結果。

package:com.xyz.game

無需使用 grep。 使用以下命令,您可以簡單地檢查應用程序是否已經存在。

運行亞行命令

adb shell pm list packages [your.package.name]

如果已經安裝了應用程序,那么上面的命令將返回,

包裹:[您的包裹名稱]

否則它不會返回任何東西,即空字符串。

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>

考慮到@Joel 的回答,只需單線即可

# uninstall only if exists
adb shell pm list packages | grep com.your.app.package && adb uninstall com.your.app.package

如果您正在使用 adb,請使用 First adb shell命令,否則您可以通過su命令在同一設備中使用 root

然后,我們可以通過它們的 pkg 名稱獲取已安裝 apk 文件的路徑,假設在我們的例子中 pkg 名稱是 com.tencent.ig

pm path com.tencent.ig | sed 's/package://'

如果安裝了應用程序:您將獲得 apk 文件的路徑

如果未安裝應用程序:您將一無所獲

以前的答案是有限的,但通過使用上述邏輯,我們也可以輕松地使用 if 語句,例如:

pkg=com.tencent.ig #Add pkg of your app only here
if [ -f $(pm path $pkg | sed 's/package://') ]
then 
echo "YES, app is installed"
#further commands if app is installed
else 
echo "NO, app is not installed"
#further commands if app not installed
fi

我認為這將非常方便。

這很好用:

adb shell pm list packages your.package.name

將 your.package.name 替換為所需的包名稱。

如果安裝了應用程序:您將獲得 apk 文件的路徑

如果未安裝應用程序:您將一無所獲

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM