API 23 Google API仿真器映像上的Gradle命令失败(armeabi-v7a)

时间:2015-10-05 15:34:53

标签: android android-studio android-emulator android-gradle

我似乎无法从命令行获取Gradle命令以使用API​​ 23 Google API模拟器图像(Google APIs ARM (armeabi-v7a)) - 我总是得到com.android.ddmlib.ShellCommandUnresponsiveException

重现的步骤:

  1. 使用API​​ 23 Google APIs ARM (armeabi-v7a)
  2. 创建AVD
  3. 克隆https://github.com/googlemaps/android-maps-utils(或使用您自己的项目)
  4. 从命令行运行gradlew installDebug
  5. 你会看到:

      

    :演示:assembleDebug   :demo:installDebug FAILED

         

    失败:构建因异常而失败。

         
        
    • 出了什么问题:
    •   
         

    任务执行失败':demo:installDebug'。   com.android.builder.testing.api.DeviceException:com.android.ddmlib.ShellCommandUnresponsiveException

    如果您运行gradlew connectedCheck,您会看到类似的错误:

      
        
    • 出了什么问题:   任务':library:connectedDebugAndroidTest'的执行失败。   com.android.builder.testing.api.TestException:com.android.builder.testing.api.DeviceException:com.android.ddmlib.ShellCommandUnresponsiveException
    •   

    可以安装/运行Android Studio(1.4)中的项目和测试,没有任何问题。

    Gradle命令似乎在命令行中 API 21 Google API仿真器图像上正常运行。

    以下是Travis for API 23 Google API仿真器图片的示例失败:

    https://travis-ci.org/barbeau/android-maps-utils/builds/83233500

    ...以及使用API​​ 21 Google API模拟器图片时的成功构建示例:

    https://travis-ci.org/barbeau/android-maps-utils/builds/83234555

    这两个版本之间的唯一区别是Google API模拟器API级别为23对21:

    https://github.com/barbeau/android-maps-utils/commit/a5eecd7e7a4fc899ecd5eaeae6826414fefeae70

    修改

    我在这里就这个问题打开了一个AOSP问题:

    https://code.google.com/p/android/issues/detail?id=190200

1 个答案:

答案 0 :(得分:8)

简短回答

Android Gradle Plugin的硬编码超时值太低了。

Google将其修复为version 2.0.0-beta3

  

将在2.0.0-beta3。

     

那么我们在build.gradle中放置什么来设置这个超时值?

     

目前它全部附加到android.adbOptions.timeOutInMs。

示例:Google项目Increasing ADB timeoutadding Travis-ci support。它works!。

之前的回复

这是same issue that has been reported here

在此处阅读有关硬编码和低超时的workaround from the unity3 developer

明星 the issue

你是对的。这不是Travis-ci问题,要重现它,您只需要创建一个armeabi-v7a模拟器并尝试从gradle命令本地安装任何应用程序。

更多信息here, the update3 of my answer

<强>更新

您可以使用adb:

来避免installVariant任务和此问题
./gradlew clean
./gradlew assembleDebug
./gradlew assembleDebugAndroidTest
adb install app/build/outputs/apk/app-debug.apk
adb install app/build/outputs/apk/app-debug-androidTest-unaligned.apk
adb shell am instrument -w com.google.samples.apps.topeka.test/android.support.test.runner.AndroidJUnitRunner

有效:

...
:app:assembleDebugAndroidTest

BUILD SUCCESSFUL
Total time: 19.787 secs
2413 KB/s (4204090 bytes in 1.701s)
    pkg: /data/local/tmp/app-debug.apk
Success
1984 KB/s (1058902 bytes in 0.521s)
    pkg: /data/local/tmp/app-debug-androidTest-unaligned.apk
Success

com.google.samples.apps.topeka.activity.SignInActivityTest:.
com.google.samples.apps.topeka.activity.quiz.EntertainmentQuizTest:.
com.google.samples.apps.topeka.activity.quiz.GeneralKnowledgeQuizTest:..