gradle执行进程错误流

时间:2014-03-28 21:35:05

标签: android groovy android-emulator gradle

我有一个Android项目并试图启动模拟器。它在本地工作正常,但不在构建服务器上,所以我试图找出原因,但我无法看到任何错误输出(甚至在本地)。

task startEmulator << {
    def process = "emulator -avd nexus4 -no-boot-anim -no-window".execute()
    //...consumption code here
}

这是我尝试读取错误输出的内容:

process.waitFor()
print process.err.text

process.waitForProcessOutput(System.out, System.err)

process.consumeProcessOutput(System.out, System.err)

process.consumeProcessErrorStream(System.err)

错误代码被正确设置为1或0,具体取决于运行是否成功。这不是代码退出太快的问题。例如,当我尝试使用不存在的AVD名称的代码时,错误流为空。

我错过了什么?

PS:不能使用exec任务,因为我需要在后台执行异步/执行调用。

2 个答案:

答案 0 :(得分:1)

确保tomcat用户(如果您使用的是tomcat)具有运行命令模拟器的权限。如果tomcat用户没有权限,则无法运行该命令。

答案 1 :(得分:0)

我的解决方法是使用字符串缓冲区。

def bout = new StringBuffer()
// Not sure if a common buffer is always a good idea.
"ls".execute().waitForProcessOutput(bout, bout)
println bout.toString()