Остановка приложения Android из консоли - PullRequest
181 голосов
/ 25 июня 2010

Можно ли остановить приложение Android с консоли? Что-то вроде:

adb stop com.my.app.package

Это сильно ускорит наш процесс тестирования. Прямо сейчас мы удаляем / устанавливаем приложение каждый раз, чтобы убедиться, что тестовые случаи вручную начинаются с чистого состояния.

Ответы [ 10 ]

492 голосов
/ 05 сентября 2012

Чистый способ остановки приложения:

adb shell am force-stop com.my.app.package

Таким образом, вам не нужно вычислять идентификатор процесса.

132 голосов
/ 25 июня 2010

Редактировать: Спустя долгое время после того, как я написал этот пост и был принят в качестве ответа, команда am force-stop была реализована командой Android, как упоминалось в this ответить .

В качестве альтернативы: Вместо того, чтобы просто останавливать приложение, поскольку вы упоминаете о необходимости «чистого листа» для каждого запуска теста, вы можете использовать adb shell pm clear com.my.app.package, что остановит процесс приложения и очистить все сохраненные данные для этого приложения.


Если вы работаете в Linux:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill

Это будет работать только для устройств / эмуляторов, где у вас есть root сразу после запуска оболочки. Это, вероятно, можно немного уточнить, чтобы заранее позвонить su.

В противном случае вы можете сделать (вручную или, я полагаю, по сценарию):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>

21 голосов
/ 15 ноября 2015

Сначала поместите приложение в фоновый режим (нажмите кнопку «Домой» на устройстве)

Затем .... в терминале ....

adb shell am kill com.your.package
14 голосов
/ 31 декабря 2011

вы можете использовать следующее из консоли устройства: pm disable com.my.app.package, которое убьет его.Затем используйте pm enable com.my.app.package, чтобы запустить его снова.

9 голосов
/ 09 ноября 2011

Если у вас есть доступ к пакету приложения, вы можете установить его с параметром -r, и он убьет процесс, если он запущен в качестве побочного эффекта.Например:

adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity

Параметр -r сохраняет данные, связанные с приложением.Тем не менее, если вы хотите получить чистый лист, как вы упомянули, вы можете не использовать эту опцию.

7 голосов
/ 17 июля 2013

Если вы нацелены на некорневое устройство и / или у вас есть сервисы APK, которые вы не хотите останавливать, другие решения не будут работать.

Чтобы решить эту проблему, я прибег к получателю широковещательных сообщений, добавленному в свою деятельность, чтобы остановить его.

public class TestActivity extends Activity {
    private static final String STOP_COMMAND = "com.example.TestActivity.STOP";

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            TestActivity.this.finish();
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //other stuff...

        registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND));
    }
}

Таким образом, вы можете выполнить команду adb, чтобы остановить свою деятельность:

adb shell am broadcast -a com.example.TestActivity.STOP
2 голосов
/ 14 марта 2016

Если все, что вам нужно, это убить посылку

pkill package_name 

должно работать

0 голосов
/ 05 сентября 2018

adb shell killall -9 com.your.package.name

в соответствии с MAC «Обязательный контроль доступа» вы, вероятно, имеете разрешение убить процесс который не запускается пользователем root

веселись!

0 голосов
/ 18 декабря 2016
pkill NAMEofAPP

Не рутированный зефир, termux и эмулятор терминала.

0 голосов
/ 25 июня 2010

В eclipse перейдите в перспективу DDMS и на вкладке устройства щелкните процесс, который вы хотите уничтожить, на устройстве, на котором вы хотите его уничтожить.Затем вам просто нужно нажать кнопку остановки, и это должно убить процесс.

Я не уверен, как вы это сделаете из инструмента командной строки, но должен быть способ.Может быть, вы делаете это через оболочку adb ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...