Edycja: Długo po tym, jak napisałem ten post i został zaakceptowany jako odpowiedź, am force-stop
polecenie zostało zaimplementowane przez zespół Androida, jak wspomniano w tej odpowiedzi .
Alternatywnie: Zamiast tylko zatrzymywać aplikację, ponieważ wspominasz o potrzebie „czystego konta” dla każdego uruchomienia testowego, możesz użyć tego adb shell pm clear com.my.app.package
, co zatrzyma proces aplikacji i usunie wszystkie zapisane dane dla tej aplikacji.
Jeśli korzystasz z systemu Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Będzie to działać tylko w przypadku urządzeń / emulatorów, w których rootujesz natychmiast po uruchomieniu powłoki. Można to prawdopodobnie nieco ulepszyć, aby zadzwonić su
wcześniej.
W przeciwnym razie możesz zrobić (ręcznie lub, jak sądzę, skryptowo):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>
Najprostszym sposobem zatrzymania aplikacji jest:
W ten sposób nie musisz ustalać identyfikatora procesu.
źródło
force-stop
komenda istniała. Zaktualizowałem swoją odpowiedź, aby wskazać tę.Android 9.0 API Level 28
aplikacja nadal wyświetla się w najnowszych aplikacjach, nawet jeśliPID
znaleziono ją w odniesieniu do aplikacji. Czy wiesz, jak całkowicie zatrzymać aplikację, co oznacza nawet z aplikacji działających w tle?Najpierw umieść aplikację w tle (naciśnij przycisk początkowy urządzenia)
Następnie .... w terminalu ....
źródło
z konsoli urządzenia możesz skorzystać z następujących opcji:
pm disable com.my.app.package
która go zabije. Następnie użyjpm enable com.my.app.package
, aby móc go ponownie uruchomić.źródło
adb shell
uruchomićsu
.Jeśli masz dostęp do pakietu aplikacji, możesz zainstalować z opcją -r, a proces zostanie zabity, jeśli jest uruchomiony jako efekt uboczny. Lubię to:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity
Opcja -r zachowuje dane aktualnie powiązane z aplikacją. Jeśli jednak chcesz mieć czystą tablicę, o której wspomniałeś, możesz nie chcieć korzystać z tej opcji.
źródło
Jeśli zaatakujesz niezrootowane urządzenie i / lub masz w sobie usługi APK, których również nie chcesz zatrzymać, inne rozwiązania nie będą działać.
Aby rozwiązać ten problem, skorzystałem z odbiornika wiadomości rozgłoszeniowych, który dodałem do mojej działalności, aby go zatrzymać.
W ten sposób możesz wydać polecenie adb, aby zatrzymać swoją aktywność:
źródło
Jeśli wszystko, czego szukasz, to zabicie paczki
powinno działać
źródło
adb shell killall -9 com.your.package.name
zgodnie z MAC „obowiązkową kontrolą dostępu” prawdopodobnie masz uprawnienia do zabicia procesu, który nie jest uruchamiany przez roota
baw się dobrze!
źródło
W Eclipse przejdź do perspektywy DDMS, a na zakładce urządzenia kliknij proces, który chcesz zabić pod urządzeniem, na którym chcesz go zabić. Następnie wystarczy nacisnąć przycisk Stop, co powinno zabić proces.
Nie jestem pewien, jak zrobiłbyś to z narzędzia wiersza poleceń, ale musi być jakiś sposób. Może robisz to przez powłokę adb ...
źródło
Nierootowany emulator marshmallow, termux i terminal.
źródło