2016-10-24 46 views
2

我目前正試圖得到一個travis.yml適用於Android 24 /構建工具24.0.3和有一些麻煩。與Android Lib的特拉維斯CI - 沒有兼容的設備連接

我有我的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,可以幫助解釋爲什麼它不工作。

回答

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,直到找到更好的解決方案。

過去兩年我花了很多空閒時間試圖找到這類問題的解決方案,最好的辦法就是使用ci版本構建較低的API和設備或對最近的API進行本地測試。

如果您考慮解決問題所需的時間,那麼使用最新的API的好處是不夠的。

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/masterhttps://travis-ci.org/isuPatches/WiseFy/builds表明,它的工作。

+0

感謝您分享您的工作解決方案。真的,下載這兩個平臺是正確的。你的[sdk目標](https://github.com/ardock/android-topeka/blob/acib/scripts/acib#L49)和每個[模擬器目標](https://github.com/ardock/android-topeka /blob/acib/.travis.yml#L27)。以前的平臺是[預安裝的](https://github.com/travis-ci/travis-cookbooks/blob/a68419ebe0ce92876a70534cd145ddd931d0feee/ci_environment/android-sdk/attributes/default.rb)。 – albodelu