Възможно ли е принудително спиране на приложение, което отстранявам грешки с помощта на adb в терминала?

Разработвам приложение и за отстраняване на грешки при определени действия при първата инсталация открих, че използвайки командата на терминала:

./adb uninstall <package-name>

беше много бързо от навигирането до настройките, приложенията, изчакването на приложенията да се заредят, намирането на вашето приложение и деинсталирането му. Силно бих го препоръчал на всеки, който все още не го използва за отстраняване на грешки.

Сега се опитвам да работя върху частта за принудително затваряне на приложението си и не мога да намеря никъде в документа за android инструкции как да затворя принудително приложение чрез команда adb.

Възможно ли е?


person NotACleverMan    schedule 08.07.2011    source източник


Отговори (5)


Можете да затворите един чрез неговия pid, като използвате

adb shell kill <PID>

но не съм сигурен дали ще го направя с име на пакет.

person matsjoe    schedule 08.07.2011
comment
Можете първо да издадете: adb shell ps. Анализирайте резултата и намерете PID. - person ; 08.07.2011

am force-stop YOUR.PACKAGE.NAME

Тази команда работи за мен. Надяваме се, че това ще помогне и на вас.

person Arief Widiyanto    schedule 29.12.2012

Можете да използвате adb shell kill, за да убиете процеса, но първо трябва да намерите идентификатора на процеса. За да направите това, можете да използвате adb shell ps и да анализирате изхода. Ето пример (ако приемем, че компютърът ви за разработка е Unix):

adb shell kill $(adb shell ps | grep YOUR.PACKAGE.NAME | awk '{ print $2 }')
person Michael Smith    schedule 16.01.2012
comment
Това е страхотна команда. Но получавам „не може да убие pid 6551: Операцията не е разрешена“ телефонът трябва ли да бъде руутнат? - person Bernie Perez; 07.06.2012
comment
@BerniePerez, между другото, отговорът на въпроса ви е да. Страхотен отговор! - person mfrankli; 22.06.2012
comment
Корекция на неразрешена операция: adb shell "su -c 'kill $(adb shell ps | grep YOUR.PACKAGE.NAME | awk '{ print $2 }')'" - person DmitrySandalov; 06.12.2014
comment
Имате нужда от root устройство, за да убиете - person Nafis Ahmad; 11.07.2015

adb killall YOUR.PACKAGE.NAME

Създадох пакетен скрипт за изпълнение на тази команда.

person Felipe F. Lima    schedule 25.08.2012
comment
Трябва да е adb shell, su, след това killall YOU.PACKAGE.NAME за мен. - person kakyo; 16.08.2013

Ако не можете да използвате awk по някаква причина (непълна инсталация на cygwin в моя случай), следното може да работи:

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

Обяснение: Първо, ps изброява работещи процеси. От изхода grep получава реда, съдържащ YOUR.PACKAGE.NAME. sed съкращава последователните интервали в едно, за да помогне на cut да получи частта от името на пакета от този ред. Накрая идентификаторът на процеса се препраща към kill.

person Juuso Ohtonen    schedule 19.01.2014
comment
Трябва да имате sed (имам го само когато инсталирам busybox). - person pevik; 27.11.2014