Android gradle命令行语句被其后的while循环阻止

Android gradle命令行语句被其后的while循环阻止,android,gradle,adb,Android,Gradle,Adb,我有一个Gradle任务,它意味着启动安装在连接的Android设备上的应用程序。该应用程序被设计为执行一些操作,然后自动关闭,我的任务应该检测到这一点。该应用程序是一个Unity构建的应用程序,不管它值多少钱——尽管我不确定它是否重要 当然,我对Gradle还是个新手,所以请原谅我在这里犯的任何愚蠢的错误 任务如下: task androidTests(type: Exec) { def output = new ByteArrayOutputStream() println

我有一个Gradle任务,它意味着启动安装在连接的Android设备上的应用程序。该应用程序被设计为执行一些操作,然后自动关闭,我的任务应该检测到这一点。该应用程序是一个Unity构建的应用程序,不管它值多少钱——尽管我不确定它是否重要

当然,我对Gradle还是个新手,所以请原谅我在这里犯的任何愚蠢的错误

任务如下:

task androidTests(type: Exec) {
    def output = new ByteArrayOutputStream()
    println "Starting Unity Sample App"
    commandLine 'adb', 'shell', 'am', 'start', '-n', "com.foo.bar/com.unity3d.UnityPlayerActivity"
    while(!output.toString().contains('com.foo.bar')) {
        // Wait for the app to launch
        println "Sample app is not running yet."
        commandLine "adb", "shell", "ps", "yPlayerActivity"
    }
    // Now wait for the app to close
    while(output.toString().contains(packageName)) {
        println "Sample app has not closed yet."
        commandLine "adb", "shell", "ps", "yPlayerActivity"
    }
}
当前,此任务只会向我的控制台发送垃圾邮件“示例应用程序尚未运行”,并且该应用程序不会在设备上启动。奇怪的是,如果我在循环时删除第一个
,任务就完成了,应用程序也会在我的设备上启动


有人知道这里可能出了什么问题吗?似乎第一个while循环实际上以某种方式阻塞了它前面的命令行语句。如果您能帮我解决这个问题,我们将不胜感激。谢谢大家!

你不应该在while循环中有某种延迟吗?你不仅在向你的控制台发送垃圾邮件,还不断地向adb发送垃圾邮件,这可能会影响你通过adb与设备通信的能力。我会尝试在两个循环中添加0.5秒的线程睡眠时间。实际上,在发布此示例之前,我也尝试在循环中添加1000毫秒的睡眠时间,但似乎没有任何帮助。你的while循环中不应该有某种延迟吗?你不仅在滥发你的控制台,还不断地滥发adb,可能会影响您通过adb与设备通信的能力。我会尝试在两个循环中添加0.5秒的线程睡眠时间。实际上,在发布这个示例之前,我也尝试在循环中添加1000毫秒的睡眠时间,但似乎没有帮助。