Travis CI Android Tests: no connected devices
Unfortunately i am not allowed to comment, as i just want to complete DominicJodoin's answer. Correct indentation and a longer ADB_INSTALL_TIMEOUT
is necessary as DominicJodoin already stated.
In my opinion your Emulator is running but not ready to install an apk. With - adb wait-for-device
you wait until the device connected. According to the Documentation this means:
Note that this command does not cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system.
Try replacing this line with - android-wait-for-emulator
in your travis.yml instead.
Travis.yml
language: androidjdk: oraclejdk7cache: directories: - node_modulessudo: falseandroid: components: # Uncomment the lines below if you want to # use the latest revision of Android SDK Tools # - platform-tools # - tools # The BuildTools version used by your project - build-tools-22.0.1 # The SDK version used to compile your project - android-22 # Additional components - extra-google-google_play_services - extra-google-m2repository - extra-android-m2repository # - addon-google_apis-google-19 # - add-on # - extra # Specify at least one system image, # if you need to run emulator(s) during your tests - sys-img-armeabi-v7a-android-21 # - sys-img-x86-android-17 licenses: - 'android-sdk-license-.+'env: global: # install timeout in minutes (2 minutes by default) - ADB_INSTALL_TIMEOUT=8# Emulator Management: Create, Start and Waitbefore_script: - echo no | android create avd --force -n test -t android-21 --abi armeabi-v7a - emulator -avd test -no-skin -no-audio -no-window & - android-wait-for-emulator - adb shell input keyevent 82 &script: - android list target - ./gradlew connectedAndroidTest
I think your problem is the sys-img-armeabi-v7a-android-22
image is not available yet on Travis CI.
Indeed if you run the following command on Travis CI: android list target
, the output for android-22
shows no Tag/ABIs : no ABIs.
I would suggest you try running your tests on the sys-img-armeabi-v7a-android-21
in the meantime.
You can have a look at a sample Android project with unit tests I forked and ran successfully with your components but with sys-img-armeabi-v7a-android-21
image on Travis CI:
Hope this helps!
Edit: android-22
image should be available shortly on Travis CI. See the following pull request.
I wanted to use a more recent emulator. Unfortunately I wasn't able to make it work on android-26 or 27, but I was able to make it work on android-25. The ABI names were changed. Here's what works for me:
language: androidjdk: - oraclejdk8env: global: - ANDROID_BUILD_TOOLS_VERSION=26.0.2 - ANDROID_ABI=arm64-v8a - ANDROID_TAG=google_apis - ANDROID_API_LEVEL=26 - EMULATOR_API_LEVEL=25 - ADB_INSTALL_TIMEOUT=8 # minutes (2 minutes by default)android: components: # Uncomment the lines below if you want to # use the latest revision of Android SDK Tools - tools - platform-tools - tools # The BuildTools version used by your project - build-tools-$ANDROID_BUILD_TOOLS_VERSION # The SDK version used to compile your project - android-$ANDROID_API_LEVEL - android-$EMULATOR_API_LEVEL # Support library # Latest artifacts in local repository - extra-android-m2repository # Specify at least one system image, # if you need to run emulator(s) during your tests - sys-img-$ANDROID_ABI-$ANDROID_TAG-$EMULATOR_API_LEVELbefore_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/cache: directories: - $HOME/.gradle/caches/ - $HOME/.gradle/wrapper/# Emulator Management: Create, Start and Waitbefore_script: - android list targets - echo no | android create avd --force -n test -t "android-"$EMULATOR_API_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG - emulator -list-avds - emulator -avd test -no-window & - android-wait-for-emulator - adb devices - adb shell input keyevent 82 &