2011-07-08 4 views
5

Zajmuję się tworzeniem aplikacji, a do debugowania pewnych działań na pierwszej instalacji Okazało się, że za pomocą komendy terminala:Czy można "wymuszać zatrzymanie" aplikacji, którą debuguję za pomocą terminalu adb in?

./adb uninstall <package-name> 

było dużo szybko niż przechodząc do ustawień, aplikacje, czekając na aplikacje do załadowania, znalezienie Twoja aplikacja i odinstalowanie jej. Gorąco polecam go każdemu, kto nie używa go do debugowania.

Teraz próbuję pracować nad blisko położoną częścią mojej aplikacji i nie mogę znaleźć nigdzie w dokumencie androida, instrukcji jak zamknąć aplikację przy pomocy polecenia adb.

Czy to możliwe?

Odpowiedz

6

Można zamknąć jedną jego PID z wykorzystaniem

adb shell kill <PID> 

ale nie jestem pewien, robi to z nazwą pakietu.

+2

Możesz najpierw wydać: "adb shell ps". Parsuj wynik i znajdź PID. –

17

Możesz użyć adb shell kill, aby zabić proces, ale najpierw musisz znaleźć identyfikator procesu. Aby to zrobić, możesz użyć adb shell ps i przeanalizować wyjście. Oto przykład (zakładając, że komputer jest rozwój Unix):

adb shell kill $(adb shell ps | grep YOUR.PACKAGE.NAME | awk '{ print $2 }') 
+3

To jest niesamowite polecenie. Ale dostaję "nie można zabić pid 6551: Operacja niedozwolona" czy telefon musi być zrootowany? –

+0

@BerniePerez odpowiedź na twoje pytanie brzmi "tak", nawiasem mówiąc. Świetna odpowiedź! – mfrankli

+0

Operacja niedozwolona poprawka: 'adb shell" su -c 'kill $ (adb shell ps | grep YOUR.PACKAGE.NAME | awk' {print $ 2} ')' "' – DmitrySandalov

3
adb killall YOUR.PACKAGE.NAME 

Został utworzony skrypt wsadowy do uruchomienia tej komendy.

+0

bądź 'adb shell',' su', następnie 'killall YOU.PACKAGE.NAME' dla mnie. – kakyo

21
am force-stop YOUR.PACKAGE.NAME 

To polecenie zadziałało dla mnie. Mam nadzieję, że to ci również pomoże.

0

Jeśli nie można używać awk z jakiegoś powodu (niekompletny cygwin instalacji w moim przypadku), następujące może pracować:

adb shell ps | grep YOUR.PACKAGE.NAME | sed 's/\s\s*/ /g' | cut -d ' ' -f 2 | adb shell kill

Objaśnienie: Po pierwsze, ps listy uruchomionych procesów. Z wyjścia, grep dostaje wiersz zawierający YOUR.PACKAGE.NAME. sed powoduje obcięcie kolejnych spacji w jeden, aby pomóc cut uzyskać nazwę pakietu z tej linii. Na koniec identyfikator procesu jest przesyłany do kill.

+0

Musisz mieć sed (mam go tylko wtedy, gdy instaluję 'busybox'). – pevik

Powiązane problemy