我目前正在尝试使用适用于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的错误或错误,这可能有助于解释它为什么不起作用。
答案 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表明它正在发挥作用。