Android Studio: Comment désinstaller l'APK (ou exécuter la commande adb) automatiquement avant l'exécution ou le débogage?

119

Maintenant, je dois désinstaller l'application à chaque fois avant Run\Debugdans Android Studio. Parce que j'ai besoin de recréer la base de données avant d'exécuter \ déboguer l'application. Je sais que je peux exécuter la commande

adb uninstall [package_name]

dans le terminal pour effacer les fichiers sous /data/data/[package_name]. Mais ce n'est pas un moyen pratique si je dois exécuter la commande à chaque fois. J'espère que le

adb uninstall

La commande peut être exécutée automatiquement lorsque je clique sur le Run\Debugbouton.

Jagger
la source
Il a réinstallé votre application au début du processus "Exécuter" / "Déboguer", n'est-ce pas? Ou voulez-vous désinstaller une autre application?
cck3rry
@ cck3rry Désolé, ce n'est peut-être pas très clair. Je veux exécuter la commande "adb uninstall" car je dois recréer la base de données avant d'exécuter / déboguer l'application.
Jagger
Pourquoi n'adoptez-vous pas une approche différente et n'écrivez pas quelques lignes de code qui supprimeront la base de données dans onCreate de votre première activité? Vous pouvez ensuite le recréer après cela. N'oubliez pas de supprimer ce bloc avant de le relâcher.
mattgmg1990
@ mattgmg1990 Cela signifie que je dois ajouter / supprimer un tel code à chaque fois que je fais git pull / push. Quelle douleur ...
Jagger
1
Cette réponse pourrait vous être utile
PavelGP

Réponses:

211
adb uninstall <package_name>

peut être utilisé pour désinstaller une application via votre PC. Si vous souhaitez que cela se produise automatiquement chaque fois que vous lancez votre application via Android Studio, vous pouvez le faire:

  1. Dans Android Studio, cliquez sur la liste déroulante à gauche du bouton Exécuter, puis sélectionnez Modifier les configurations ...
  2. Cliquez sur l'application sous Application Android, et dans l'onglet Général, recherchez la rubrique `` Avant le lancement ''
  3. Cliquez sur le bouton +, sélectionnez Exécuter l'outil externe, cliquez sur le bouton + dans la fenêtre contextuelle.
  4. Donnez un nom (par exemple, désinstallation adb) et une description, puis tapez adbProgram: et uninstall <your-package-name>Parameters :. Assurez-vous que le nouvel élément est sélectionné lorsque vous cliquez sur OK dans la fenêtre contextuelle.

Remarque: Si vous n'avez pas adb dans votre variable d'environnement PATH, indiquez le chemin complet vers adb dans le champ Program: (par exemple / home / user / android / sdk / platform-tools / adb).

aravindsagar
la source
2
quelques conseils / notes: si vous exécutez plusieurs émulateurs ou périphériques, vous voudrez inclure adb -s <devicename>. Les macros dans Android Studio ne fonctionnent pas correctement (v1.50.x), vous devez donc indiquer le chemin complet de adb ou le chemin de l'environnement.
Nick
@aravindsagar J'ai répertorié tous les packages de mon appareil et le nom du package de mon application n'était pas là, mais il affiche toujours Failure [DELETE_FAILED_INTERNAL_ERROR] une idée pourquoi cela se produit ??
Dinesh Phalwadiya
cela ne supprime pas les applications préinstallées, n'est-ce pas?
AbhimanyuAryan il y a
91

exemple

adb uninstall com.my.firstapp
Thiago
la source
5
Si vous ne connaissez pas le nom du pakage, mais que vous avez l'apk, vous pouvez l'obtenir avec ce stackoverflow.com/a/37324607/812915
equiman
1
Si vous regardez le contenu, je demandais "désinstaller automatiquement avant de déboguer / exécuter dans Android Studio". Cette réponse n'a pas donné de solution «automatique». Nous devrions être plus paresseux, non? :)
Jagger
15

Listez les packages par:

adb shell su 0 pm list packages

Vérifiez le package que vous souhaitez désinstaller et copiez le nom du package à partir de là. Par exemple:

com.android.calculator2

Tapez enfin:

adb uninstall com.android.calculator2 

et vous avez terminé.

kamran khader
la source
4
Pour les personnes non rootées, omettez su 0de la commande list packages.
villecoder
12

J'utilise Android Studio 2.1.2. J'avais la même exigence que OP. Bien que la réponse ci-dessus ait semblé aider tout le monde, cela n'a pas fonctionné pour moi. Je partage ce qui a fonctionné pour moi.

Allez à main menu/Run/Edit Configuration. Sélectionnez appsous Android Applicationà gauche. Cela devrait ouvrir le volet à plusieurs onglets. Sélectionnez l' Generalonglet (serait par défaut), cliquez sur +chant vert en bas (sous le texteBefore launch: Gradle -awake ... ).

Une liste déroulante apparaîtra, sélectionnez l' Gradle-aware-makeoption. Une autre zone de texte apparaîtra. entrez :app:uninstallAlldans cette zone de texte. (Vous pouvez utiliser ctrl+ spacepour utiliser la saisie semi-automatique pour déterminer la bonne cible sans tout taper. Et vous aide également à choisir le bon nom d'application disponible pour vous). et ensemble apply/ok. Relancez votre application.

Remarque: chaque fois que vous lancez votre application maintenant, cette nouvelle cible essaiera de désinstaller votre application de votre émulateur ou appareil. Donc, si votre appareil de test n'est pas disponible, votre launc échouera probablement lors de la désinstallation mais continuera à démarrer votre émulateur. Donc, démarrez d'abord votre émulateur, ou relancez après le premier échec (car le premier lancement démarrera l'émulateur si la désinstallation échoue).

Jimmy
la source
1
Cela fonctionne bien, mais vous devez le remplacer apppar le nom de votre module actuel, tel que myMainApp.
Jimbali
1
oui, utilisez simplement ctrl+ spacesur la fenêtre contextuelle pour utiliser la saisie semi-automatique. Il détermine également l'application.
Jimmy
11

Si vous souhaitez désinstaller une fois connecté à un seul appareil / émulateur, utilisez la commande ci-dessous

adb uninstall <package name>

sinon avec plusieurs appareils, puis utilisez la commande ci-dessous

adb -s <device ID> uninstall <package name>
étéGhost
la source
4

J'utilise un plug-in Android Studio appelé "adb idea" - a un menu déroulant pour diverses fonctions (Désinstaller, Tuer, Démarrer, etc.) que vous pouvez cibler sur n'importe quel appareil connecté ou simulé. On pourrait dire que cela me prend un peu plus loin d'avoir une compréhension plus profonde de la puissance des commandes adb et je serais probablement d'accord ... même si je fonctionne vraiment à un niveau de compréhension inférieur de toute façon, donc pour moi, cela aide d'avoir une aide. Idée ADB entrez la description de l'image ici

Joel Butler
la source
3

Un processus simple en trois étapes (vérifié sur le terminal Mac)

  1. Connectez votre appareil Android (veuillez connecter 1 appareil Android à la fois), de préférence par un câble et confirmez la connexion par (cela listera l'ID de l'appareil ID de l'appareil)

    adb devices
  2. Ensuite, pour lister tous les packages d'applications sur l'appareil connecté en exécutant, sur le terminal

    adb shell pm list packages -f -3 
  3. Puis désinstallez comme expliqué précédemment

    adb uninstall <package_name> 
eaccmk
la source
1

Cette commande avec --user 0 fait le travail:

adb uninstall --user 0 <package_name>
Rodolfo Jorge Nemer Nogueira
la source