2017-03-09 68 views
0

我正在使用rooted android平板電腦,並且想要執行shell命令行。不過,我已經看到他們停止,如果命令啓動器應用程序停止。如果有任何方法來保持執行的shell命令,儘管始發者應用程序停止?如果調用者停止,Android運行時exec會停止

謝謝

這正是我想要執行的。我希望能更新我的應用程序在我的應用程序:

CMD我想我的應用程序內執行:

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

然後在執行命令的第一部分,不執行休息。我已經看到這可以在其他操作系統通過修改命令(Windows添加「CMD」和Linux添加「&」在最後)解決。 Android有沒有等效的方法?

回答

0

最後我找到了解決辦法。你可以將它nohup命令之後:

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

編輯過的問題@syslogic

+0

使用'&&'或';'而不是'&' - 那麼命令將按順序處理(不需要「at」,而不需要等待多久)。 '&'運算符只能分離一個命令(因此我會質疑這個「解決方案」)。 –

+0

謝謝!我相應地編輯了它。 – jevora

0

你需要從控制檯中分離出一個&(命令後面)的TTY;而當命令有exit 0(成功)或exit 1(錯誤)時,執行將暫停。運行cron-jobs根本不需要任何控制檯。我基本上想說的是,你可能應該重新考慮如何將命令放在那裏 - 而adb shell或cron不需要任何GUI。

還有adb shell monkey - 雖然MonkeyRunner可能已經(同時)從支持庫中取代了UI Automator。

它是MonkeyUI Automator

我會寫關於這個樣子,在bash - 在PC上 - 與ADB

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

+0

請閱讀編輯的信息,我已經做了一些澄清。謝謝! – jevora

+0

@jevora剛剛發現,'-r'開關允許用戶替換已安裝的APK,而用戶也可以用adb啓動monkey ...它只需要USB電纜,但Android上沒有shell終端客戶端(因此,測試時也不會有任何干擾)。我可以看到這不完全是你要求的,但可能是最常見的方式。 –

+0

這似乎是一個很好的解決方案,當使用adb外殼。但是,如果您不使用「nohup」,則當您嘗試從App內部執行命令行時(使用Runtime.exec),則在調用者應用程序強制停止後,命令執行將停止。基本上我設法做的感謝nohup是能夠更新正在進行更新的相同的應用程序。這就像谷歌玩更新自己,它需要重新啓動後apk安裝(這就是爲什麼我安裝apk後使用強制停止和猴子) – jevora