web-dev-qa-db-fra.com

Android: Comment savoir si une application est déjà installée sur un appareil Android utilisant adb?

Je dois installer une application Android avec un nom de paquet tel que "com.xyz.game" en utilisant adb. Je souhaite automatiser le processus à l'aide d'un script Shell. Le processus sera comme si l'app est déjà installée, désinstallez-la (avec la commande adb uninstall com.xyz.game) et installez-la à l'aide de "adb install game.apk", sinon "adb install game.apk".

Comment puis-je atteindre cet objectif?

16
dg_no_9

[ Mettre à jour ]

Selon (également) la réponse correcte ci-dessous, essayez de grep le résultat des packages pm list.

adb Shell pm list packages | grep com.your.app.package


[ Original ]

Si l'application est déjà installée et si vous essayez d'installer à nouveau la même application, adb renverra avec une erreur - Failure [INSTALL_FAILED_ALREADY_EXISTS]. Toutefois, si vous souhaitez réinstaller l'application déjà installée, utilisez le paramètre -r.

Ex:

adb install -r game.apk
14
Joel Fernandes

Essayez grep le résultat des packages pm list.

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

Vous pouvez voir le résultat s'il est déjà installé.

package:com.xyz.game
16
NTj

Pas besoin d'utiliser grep. En utilisant les commandes suivantes, vous pouvez simplement vérifier si l’application existe déjà ou non.

Exécuter la commande ADB

Adb Shell pm pm packages [votre.package.name]

Si l'application est déjà installée, la commande ci-dessus reviendra,

package: [votre.package.name]

Sinon, il ne retournera rien, c'est-à-dire une chaîne vide.

13
Android

Android 7.0 a introduit cmd (un nouveau logiciel basé sur du code natif) qui permet d’interagir avec des services Android tels que PackageManager beaucoup plus rapidement que les anciens outils basés sur le bytecode Java tels que pm. Donc, pour les versions récentes d'Android au lieu de adb Shell pm list packages <package.name.substring>, vous devriez utiliser 

adb Shell cmd package list packages <package.name.substring>
0
Alex P.