Android Studio: Wie deinstalliere ich APK (oder führe den Befehl adb aus) automatisch vor dem Ausführen oder Debuggen?

119

Jetzt muss ich die App jedes Mal Run\Debugin Android Studio deinstallieren . Weil ich die Datenbank neu erstellen muss, bevor ich die App ausführe. Ich weiß, dass ich den Befehl ausführen kann

adb uninstall [package_name]

im Terminal, um die Dateien unter zu löschen /data/data/[package_name]. Aber es ist nicht bequem, wenn ich den Befehl jedes Mal ausführen muss. Ich hoffe die

adb uninstall

Befehl kann automatisch ausgeführt werden, wenn ich auf die Run\DebugSchaltfläche klicke.

Jagger
quelle
Es hat Ihre App zu Beginn des "Run" / "Debug" -Prozesses neu installiert, nicht wahr? Oder wollen Sie eine andere App deinstallieren?
cck3rry
@ cck3rry Sorry, vielleicht ist es nicht sehr klar. Ich möchte den Befehl "adb uninstall" ausführen, da ich die Datenbank neu erstellen muss, bevor ich die App ausführen / debuggen kann.
Jagger
Warum gehen Sie nicht anders vor und schreiben ein paar Codezeilen, mit denen die Datenbank in onCreate Ihrer ersten Aktivität gelöscht wird? Danach können Sie es neu erstellen. Denken Sie daran, diesen Block vor der Freigabe zu löschen.
Mattgmg1990
@ mattgmg1990 Das bedeutet, dass ich diesen Code jedes Mal hinzufügen / entfernen muss, wenn ich git pull / push mache. Was für ein Schmerz ...
Jagger
1
Diese Antwort könnte für Sie nützlich sein
PavelGP

Antworten:

209
adb uninstall <package_name>

kann verwendet werden, um eine App über Ihren PC zu deinstallieren. Wenn dies bei jedem Start Ihrer App über Android Studio automatisch geschehen soll, können Sie Folgendes tun:

  1. Klicken Sie in Android Studio auf die Dropdown-Liste links neben der Schaltfläche Ausführen und wählen Sie Konfigurationen bearbeiten ...
  2. Klicken Sie unter Android-Anwendung auf App und suchen Sie auf der Registerkarte Allgemein die Überschrift "Vor dem Start".
  3. Klicken Sie auf die Schaltfläche +, wählen Sie Externes Werkzeug ausführen und klicken Sie im Popup-Fenster auf die Schaltfläche +.
  4. Geben Sie einen Namen (z. B. adb deinstallieren) und eine Beschreibung ein und geben Sie adbProgram: und uninstall <your-package-name>in Parameters: ein. Stellen Sie sicher, dass das neue Element ausgewählt ist, wenn Sie im Popup-Fenster auf OK klicken.

Hinweis: Wenn Ihre Umgebungsvariable PATH nicht adb enthält, geben Sie den vollständigen Pfad zu adb im Feld Programm: an (z. B. / home / user / android / sdk / platform-tools / adb).

aravindsagar
quelle
2
Einige Tipps / Hinweise: Wenn Sie mehr als einen Emulator oder ein Gerät ausführen, sollten Sie adb -s <Gerätename> einfügen. Makros in Android Studio funktionieren nicht ordnungsgemäß (v1.50.x), daher müssen Sie den vollständigen Pfad für adb oder den Umgebungspfad eingeben.
Nick
@aravindsagar Ich habe alle Pakete meines Geräts aufgelistet und der Paketname meiner App war nicht vorhanden, aber es wird immer noch Fehler [DELETE_FAILED_INTERNAL_ERROR] angezeigt. Irgendeine Idee, warum dies passiert?
Dinesh Phalwadiya
90

Beispiel

adb uninstall com.my.firstapp
Joolah
quelle
5
Wenn Sie den Paketnamen nicht kennen, aber die apk haben, können Sie ihn mit diesem stackoverflow.com/a/37324607/812915
equiman
1
Wenn Sie sich den Inhalt ansehen, fragte ich "automatisch vor dem Debuggen / Ausführen in Android Studio deinstallieren". Diese Antwort ergab keine "automatische" Lösung. Wir sollten fauler sein, oder? :)
Jagger
15

Listen Sie die Pakete auf nach:

adb shell su 0 pm list packages

Überprüfen Sie, welches Paket Sie deinstallieren möchten, und kopieren Sie den Paketnamen von dort. Beispielsweise:

com.android.calculator2

Zuletzt tippen Sie ein:

adb uninstall com.android.calculator2 

und du bist fertig.

Kamran Khader
quelle
4
Lassen Sie für die nicht verwurzelten Leute su 0den Befehl list packages weg.
Villecoder
12

Ich benutze Android Studio 2.1.2. Ich hatte die gleichen Anforderungen wie OP. Obwohl die obigen zwei Antworten allen zu helfen schienen, funktionierte es bei mir nicht. Ich teile, was für mich funktioniert hat.

Gehe zu main menu/Run/Edit Configuration. Wählen Sie appunter Android Applicationauf weiter sich links Multi-Tabbed Pane öffnen sollte. Wählen Sie die GeneralRegisterkarte (Standardeinstellung) und klicken Sie +unten (unter dem Text Before launch: Gradle -awake ...) auf grün singen .

Ein Dropdown-Menü wird angezeigt. Wählen Sie die Gradle-aware-makeOption. Ein weiteres Textfeld wird angezeigt. Geben Sie :app:uninstallAllin dieses Textfeld ein. (Mit ctrl+ können Sie spacedie automatische Vervollständigung verwenden, um das richtige Ziel zu bestimmen, ohne alles einzugeben. Außerdem können Sie den richtigen App-Namen auswählen, der für Sie verfügbar ist.) und setzen apply/ok. Starten Sie Ihre App neu.

Hinweis: Jedes Mal, wenn Sie Ihre App jetzt starten, versucht dieses neue Ziel, Ihre App von Ihrem Emulator oder Gerät zu deinstallieren. Wenn Ihr Testgerät nicht verfügbar ist, schlägt Ihr Launc wahrscheinlich während der Deinstallation fehl, startet jedoch weiterhin Ihren Emulator. Starten Sie also entweder zuerst Ihren Emulator oder starten Sie ihn erneut, nachdem der erste Fehler erneut aufgetreten ist (da der erste Start den Emulator startet, obwohl die Deinstallation fehlschlägt).

Jimmy
quelle
1
Dies funktioniert gut, aber Sie müssen durch appden Namen Ihres tatsächlichen Moduls ersetzen , wie z myMainApp.
Jimbali
1
Ja, verwenden Sie einfach ctrl+ spaceim Popup, um die automatische Vervollständigung zu verwenden. Es bestimmt auch die App.
Jimmy
11

Wenn Sie deinstallieren möchten, wenn Sie mit einem einzelnen Gerät / Emulator verbunden sind, verwenden Sie den folgenden Befehl

adb uninstall <package name>

Andernfalls verwenden Sie bei mehreren Geräten den folgenden Befehl

adb -s <device ID> uninstall <package name>
Sommergeist
quelle
4

Ich verwende ein Android Studio-Plug-In namens "adb idea" - hat ein Dropdown-Menü für verschiedene Funktionen (Deinstallieren, Beenden, Starten usw.), die Sie auf jedes angeschlossene oder simulierte Gerät ausrichten können. Man könnte argumentieren, dass ich einen Schritt von einem tieferen Verständnis der Leistungsfähigkeit von ADB-Befehlen entfernt bin, und ich würde wahrscheinlich zustimmen ... obwohl ich sowieso wirklich auf einem niedrigeren Verständnisniveau arbeite, hilft es mir, dies zu tun ein Helfer. ADB-Idee Geben Sie hier die Bildbeschreibung ein

Joel Butler
quelle
3

Ein einfacher dreistufiger Prozess (auf dem Mac-Terminal überprüft)

  1. Schließen Sie Ihr Android-Gerät an (bitte schließen Sie jeweils 1 Android-Gerät an), vorzugsweise über ein Kabel, und bestätigen Sie die Verbindung mit (hier wird die Geräte-ID des Geräts aufgeführt).

    adb devices
  2. Anschließend können Sie alle App-Pakete auf dem verbundenen Gerät auflisten, indem Sie sie auf dem Terminal ausführen

    adb shell pm list packages -f -3 
  3. Deinstallieren Sie dann wie zuvor erläutert

    adb uninstall <package_name> 
eaccmk
quelle
0

Dieser Befehl mit --user 0 erledigt den Job:

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