isuPatches
isuPatches

Reputation: 7554

Travis CI with Android Lib - No compatible devices connected

I'm currently trying to get a travis.yml that works for Android 24 / build tools 24.0.3 and having some trouble.

I have the following for my 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

My current issue is that I keep getting:

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

or:

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

which are two completely separate error states.

Does anyone see anything glaringly wrong or incorrect about my travis.yml that could help explain why it's not working.

Upvotes: 2

Views: 1397

Answers (2)

isuPatches
isuPatches

Reputation: 7554

Elaborating on what Ardock posted, I was able to get around my issue by lowering the emulators SDK level. My working travis.yml is:

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

It's not super elegant having to download and install multiple SDKs, but https://github.com/isuPatches/WiseFy/commits/master and https://travis-ci.org/isuPatches/WiseFy/builds show that it's working.

Upvotes: 1

albodelu
albodelu

Reputation: 7981

Add travis_wait followed by the desired minutes to wait to fix the second issue.

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

If you fix the first issue, probably you wont need the previous solution.

The line below is normally necessary, I didn't test it on android-24 and I would need to see a full log

  - adb shell input keyevent 82 &

As a workaround, I would use a lower API level as suggested here until you find a better solution.

I have spent a lot of free time the last two years trying to find solutions to this type of issues and the best you can do is to use ci builds for lower APIs and devices or local tests for recent APIs.

The benefits of using latest APIs are not enough if you consider the time required to solve issues.

Upvotes: 1

Related Questions