使用Android Lib的Travis CI - 未连接兼容设备

时间:2016-10-24 03:30:09

标签: android travis-ci

我目前正在尝试使用适用于Android 24 / build工具24.0.3并且遇到麻烦的travis.yml。

我的travis.yml有以下内容:

language: android
sudo: required
jdk: oraclejdk8

cache:
  directories:
    - ${TRAVIS_BUILD_DIR}/gradle/caches/
    - ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/

env:
  global:
    - ANDROID_API_LEVEL=24
    - ANDROID_BUILD_TOOLS_VERSION=24.0.3
    - ANDROID_ABI=armeabi-v7a
    - ANDROID_TAG=google_apis
    - ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default)

android:
  components:
    - tools # to get the new `repository-11.xml`
    - platform-tools
    - tools # to install Android SDK tools 25.1.x
    - build-tools-$ANDROID_BUILD_TOOLS_VERSION
    - android-$ANDROID_API_LEVEL
    # For Google APIs
    - addon-google_apis-google-$ANDROID_API_LEVEL
    # Support library
    - extra-android-support
    # Latest artifacts in local repository
    - extra-google-m2repository
    - extra-android-m2repository
    # Specify at least one system image
    - sys-img-armeabi-v7a-google_apis-$ANDROID_API_LEVEL

before_script:
  - echo no | android create avd --force -n test -t "android-"$ANDROID_API_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG
  - emulator -avd test -no-skin -no-window &
  - android-wait-for-emulator

script:
  - ./gradlew clean jacocoDebugTestReport

我目前的问题是我一直在接受:

 : No compatible devices connected.[TestRunner] FAILED  Found 1 connected device(s), 0 of which were compatible. :app:connectedDebugAndroidTest FAILED

或:

No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.

这是两个完全独立的错误状态。

有没有人看到任何关于我的travis.yml的错误或错误,这可能有助于解释它为什么不起作用。

2 个答案:

答案 0 :(得分:1)

添加travis_wait,然后添加所需的分钟,等待修复第二个问题。

before_script:
  - echo no | android create avd --force -n test -t "android-"$ANDROID_API_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG
  - emulator -avd test -no-skin -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &

script:
  - travis_wait 20 ./gradlew clean jacocoDebugTestReport

如果你解决了第一个问题,可能你不需要以前的解决方案。

下面的行通常是必要的,我没有在android-24上测试它,我需要查看完整的日志

  - adb shell input keyevent 82 &

作为一种解决方法,我会使用较低的API级别建议here,直到找到更好的解决方案。

过去两年我花了很多空闲时间试图找到这类问题的解决方案,你可以做的最好的事情就是为较低的API和设备使用ci构建或者为最近的API使用本地测试。

如果考虑解决问题所需的时间,使用最新API的好处是不够的。

答案 1 :(得分:1)

详细阐述了Ardock发布的内容,我通过降低模拟器SDK级别来解决我的问题。我的工作travis.yml是:

language: android
jdk: oraclejdk8
sudo: false

android:
  components:
    - platform-tools
    - tools
    - build-tools-24.0.3
    - android-22
    - android-24
    - sys-img-armeabi-v7a-android-22
    - extra-android-m2repository
    - extra-android-support
    - extra-google-m2repository

before_script:
  # Create and start emulator
  - echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
  - emulator -avd test -no-skin -no-audio -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &

script: ./gradlew clean connectedAndroidTest -PdisablePreDex --stacktrace

下载和安装多个SDK并不是非常优雅,但是https://github.com/isuPatches/WiseFy/commits/master 并且https://travis-ci.org/isuPatches/WiseFy/builds表明它正在发挥作用。