Bearbeiten: Lange nachdem ich diesen Beitrag geschrieben hatte und er als Antwort akzeptiert wurde, wurde der am force-stop
Befehl vom Android-Team implementiert , wie in dieser Antwort erwähnt .
Alternativ: Anstatt nur die App zu stoppen, können Sie verwenden, da Sie erwähnen, dass Sie für jeden Testlauf eine "saubere Tafel" wünschen adb shell pm clear com.my.app.package
, die den App-Prozess stoppt und alle gespeicherten Daten für diese App löscht.
Wenn Sie unter Linux arbeiten:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Dies funktioniert nur bei Geräten / Emulatoren, bei denen Sie unmittelbar nach dem Ausführen einer Shell über Root verfügen. Das kann wahrscheinlich etwas verfeinert werden, um su
vorher anzurufen .
Andernfalls können Sie Folgendes tun (manuell oder vermutlich per Skript):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
Die saubere Methode zum Stoppen der App ist:
Auf diese Weise müssen Sie die Prozess-ID nicht herausfinden.
quelle
force-stop
Befehl existierte. Ich habe meine Antwort aktualisiert, um auf diese zu verweisen.Android 9.0 API Level 28
wird die App weiterhin in den letzten Apps angezeigt , obwohlPID
sie in Bezug auf die App gefunden wurde. Wissen Sie, wie Sie die App vollständig stoppen können, dh auch von den Hintergrund-Apps?Stellen Sie zuerst die App in den Hintergrund (drücken Sie die Home-Taste des Geräts).
Dann .... in einem Terminal ....
quelle
In der Gerätekonsole können Sie Folgendes verwenden:
pm disable com.my.app.package
Dadurch wird es beendet. Verwendenpm enable com.my.app.package
Sie dann, damit Sie es erneut starten können.quelle
adb shell
ausführensu
.Wenn Sie Zugriff auf das Anwendungspaket haben, können Sie es mit der Option -r installieren. Der Vorgang wird abgebrochen, wenn er derzeit als Nebeneffekt ausgeführt wird. So was:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
Die Option -r behält die aktuell mit der App verknüpften Daten bei. Wenn Sie jedoch eine saubere Tafel wünschen, wie Sie bereits erwähnt haben, möchten Sie diese Option möglicherweise nicht verwenden.
quelle
Wenn Sie auf ein nicht gerootetes Gerät abzielen und / oder Dienste in Ihrer APK haben, die Sie nicht ebenfalls stoppen möchten, funktionieren die anderen Lösungen nicht.
Um dieses Problem zu lösen, habe ich auf einen Broadcast-Nachrichtenempfänger zurückgegriffen, den ich meiner Aktivität hinzugefügt habe, um sie zu stoppen.
Auf diese Weise können Sie diesen Befehl adb ausgeben, um Ihre Aktivität zu stoppen:
quelle
Wenn Sie nur ein Paket töten wollen
sollte arbeiten
quelle
adb shell killall -9 com.your.package.name
Laut MAC "obligatorische Zugriffskontrolle" haben Sie wahrscheinlich die Berechtigung, einen Prozess abzubrechen, der nicht von root gestartet wird
habe Spaß!
quelle
Wechseln Sie in Eclipse zur DDMS-Perspektive und klicken Sie auf der Registerkarte Geräte unter dem Gerät, auf dem Sie es beenden möchten, auf den Prozess, den Sie beenden möchten. Sie müssen dann nur noch die Stopp-Taste drücken und der Vorgang sollte abgebrochen werden.
Ich bin mir nicht sicher, wie Sie dies über das Befehlszeilentool tun würden, aber es muss einen Weg geben. Vielleicht machst du es durch die ADB-Shell ...
quelle
Nicht verwurzelter Marshmallow-, Termux- und Terminal-Emulator.
quelle