Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果调用方停止,Android runtime exec将停止_Java_Android_Shell_Cmd_Apk - Fatal编程技术网

Java 如果调用方停止,Android runtime exec将停止

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 然后,当执行命令的第一部分时,不执行其余部分。我已经看到,在

我正在使用根安卓平板电脑,我想执行shell命令行。但是,我看到如果命令启动器应用程序停止,它们就会停止。是否有任何方法可以在发起人应用程序停止时保持shell命令的执行

谢谢

这正是我想要执行的。我希望能够在我的应用程序中更新我的应用程序:

cmd我想在我的应用程序中执行:

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
,甚至不知道等待多长时间)。
&
操作符只适合分离一个命令(因此我质疑“解决方案”)。