Java 如果调用方停止,Android runtime exec将停止
我正在使用根安卓平板电脑,我想执行shell命令行。但是,我看到如果命令启动器应用程序停止,它们就会停止。是否有任何方法可以在发起人应用程序停止时保持shell命令的执行 谢谢 这正是我想要执行的。我希望能够在我的应用程序中更新我的应用程序: cmd我想在我的应用程序中执行:Java 如果调用方停止,Android runtime exec将停止,java,android,shell,cmd,apk,Java,Android,Shell,Cmd,Apk,我正在使用根安卓平板电脑,我想执行shell命令行。但是,我看到如果命令启动器应用程序停止,它们就会停止。是否有任何方法可以在发起人应用程序停止时保持shell命令的执行 谢谢 这正是我想要执行的。我希望能够在我的应用程序中更新我的应用程序: cmd我想在我的应用程序中执行: am force-stop myapp & install newVersionOfMyApp.apk & monkey -p myapp 1 然后,当执行命令的第一部分时,不执行其余部分。我已经看到,在
am force-stop myapp & install newVersionOfMyApp.apk & monkey -p myapp 1
然后,当执行命令的第一部分时,不执行其余部分。我已经看到,在其他操作系统中可以通过修改命令来解决这个问题(windows在末尾添加“cmd”和linux添加“&”)。Android是否有任何等效方法?您需要使用
&
(在命令后面)将TTY与控制台分离;当命令有退出0
(成功)或退出1
(错误)时,执行仍将停止。运行cron作业根本不需要任何控制台。我想说的是,您可能应该重新考虑如何将命令放在那里,而adb shell
或cron不需要任何GUI
还有adb shell monkey
——而MonkeyRunner可能(同时)被支持库中的UI自动机所取代
这是对
我会这样写,在电脑上的bash
,使用:
adb安装-r com.acme.apk&&adb shell monkey-p com.acme.AppName-v 500
最终我找到了解决方案。您可以通过将其放在nohup命令之后来执行此操作:
nohup sh -c 'am force-stop myapp && install newVersionOfMyApp.apk && monkey -p myapp 1' &
用@syslogic的信息编辑请阅读问题的编辑,我已经做了一些澄清。谢谢@jevora刚刚发现,
-r
开关可以替换已安装的APK,同时也可以使用adb启动monkey…它只需要USB电缆,但Android上没有外壳终端客户端(因此,测试时也不会有任何干扰)。我可以看出,这并不完全是你想要的,但可能是最常见的方法。这似乎是一个很好的解决方案,当使用adb外壳。但是,当您尝试从应用程序内部执行命令行时(使用Runtime.exec),如果您不使用“nohup”,则在我强制停止调用方应用程序后,命令执行将停止。基本上,感谢nohup,我所做的就是能够更新正在进行更新的同一个应用程序。就像google play更新自己一样,它需要在安装apk后重新启动(这就是为什么我在安装apk后使用强制停止和monkey)使用&&
或
而不是&
-然后将按顺序处理命令(不需要at
,甚至不知道等待多长时间)。&
操作符只适合分离一个命令(因此我质疑“解决方案”)。