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