Остановка приложения для Android из консоли



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



adb stop com.my.app.package


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

595   10  

10 ответов:

Edit: спустя долгое время после того, как я написал этот пост, и он был принят в качестве ответа, был реализовала командой Android, как уже упоминалось в ответ.

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


если вы на Linux:
adb shell ps | grep com.myapp | awk '{print }' | xargs adb shell kill

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

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

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

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

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

во-первых, поместите приложение в фоновом режиме (нажмите кнопку home устройства)

Then....in терминал....

adb shell am kill com.your.package

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

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

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

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

Если вы нацелены на некорневое устройство и / или имеете службы в вашем 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

Если все, что вы ищете, убивает пакет

pkill package_name 

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

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

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

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

согласно MAC " обязательный контроль доступа" у вас, вероятно, есть разрешение на убийство процесса который не запускается с помощью root

удачи!

pkill NAMEofAPP

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

Comments

    Ничего не найдено.