【问题标题】:gradle execute process error streamgradle执行过程错误流
【发布时间】:2014-03-28 21:35:05
【问题描述】:

我有一个 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 任务,因为我需要这个执行调用是异步的/在后台。

【问题讨论】:

  • 问题是否特定于emulator 命令?你能试试更简单的,比如ls吗?

标签: android groovy android-emulator gradle


【解决方案1】:

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

【讨论】:

  • 我更新了问题,即使在本地也看不到错误流上的任何内容。此外,我不是在寻找有关如何解决模拟器问题的建议 - 而是试图理解为什么我无法读取 gradle 中的错误流(注意问题的标题)。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多