2014-03-28 40 views
3

我有一個android項目,並試圖啓動模擬器。它在本地工作正常,但不在構建服務器上,所以我試圖弄清楚爲什麼,但我無法看到任何錯誤輸出(甚至是本地)。gradle執行進程錯誤流

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任務,因爲我需要這個執行調用是異步/在後臺。

+0

是'emulator'命令特有的問題嗎?你可以嘗試一些簡單的方法,比如'ls'嗎? – Jarekczek

回答

1

確保tomcat用戶(如果您使用的是tomcat)具有運行命令模擬器的權限。如果tomcat用戶沒有權限,那麼您將無法運行該命令。

+0

我更新了這個問題,即使在本地我也看不到錯誤流中的任何內容。此外,我不在尋找如何解決模擬器問題的建議 - 而是試圖瞭解爲什麼我無法讀取gradle中的錯誤流(注意問題的標題)。 – radu

0

我的解決方法是使用字符串緩衝區。

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