Android runtime exec останавливается, если вызывающий останавливается

Я работаю с рутированными планшетами Android и хочу выполнять командные строки оболочки. Тем не менее, я видел, что они останавливаются, если останавливается приложение запуска команд. Если есть какой-либо способ сохранить выполнение команд оболочки, несмотря на остановку приложения-инициатора?

Спасибо

Это именно то, что я хочу выполнить. Я хочу иметь возможность обновить мое приложение внутри моего приложения:

cmd я хочу выполнить внутри моего приложения:

am force-stop myapp & install newVersionOfMyApp.apk & monkey -p myapp 1

Затем, когда первая часть команды выполнена, остальные не выполняются. Я видел, что это можно решить в других ОС, изменив команду (в конце Windows добавляет "cmd" и linux add "&"). Есть ли у Android аналогичный способ?

2 ответа

Решение

Наконец я нашел решение. Вы можете сделать это, поставив его после команды nohup:

nohup sh -c 'am force-stop myapp && install newVersionOfMyApp.apk && monkey -p myapp 1' &

Отредактировано с информацией @syslogic

Вам нужно будет отсоединить TTY от консоли с помощью & (за командой); в то время как когда команда имеет exit 0 (успех) или exit 1 (ошибка), выполнение тем не менее остановится. запуск cron-jobs вообще не потребует консоли. Что я в основном пытаюсь сказать, так это то, что вам, вероятно, следует пересмотреть способ размещения команд там - пока adb shell или cron не требует никакого графического интерфейса.

также есть adb shell monkey - в то время как MonkeyRunner можно было (тем временем) заменить на UI Automator из библиотеки поддержки.

Это Обезьяна против UI Automator.

Я бы написал это примерно так, в bash - на ПК - с АБР:

adb install -r com.acme.apk && adb shell monkey -p com.acme.AppName -v 500

Другие вопросы по тегам