2017-03-09 98 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