Travis CI Android Tests: no hay dispositivos conectados
Estoy tratando de configurar Travis para Android. Ejecutar la compilación parece funcionar hasta ahora, pero cuando se trata de las pruebas, se queja de "No hay dispositivos conectados!"
:app:connectedAndroidTestDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:connectedAndroidTestDebug'. > com.android.builder.testing.api.DeviceException: java.lang.RuntimeException: No connected devices!
Aquí está mi .travis.yml, y por lo que entiendo, estoy creando e iniciando un emulador para las pruebas, tal como lo dice la documentación .
- Travis-ci build sigue fallando con ShellCommandUnresponsiveException
- Comenzando google-services.json a GitHub
- No se puede construir el proyecto con Travis-CI y Android
- Travis CI para Android - Error de compilación: No se pudo encontrar el destino y no se encontraron dependencias
- Prueba de instrumentación de Android falla en Travis CI AVD pero funciona en emulador local
language: android android: 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-22 # - sys-img-x86-android-17 licenses: - 'android-sdk-license-.+' # Emulator Management: Create, Start and Wait before_script: - 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 &
¿Puedes decirme qué estoy haciendo mal y cómo solucionarlo?
- Cómo ejecutar Prueba Travis-CI y Espresso
- Archivo de clase para android.support.v4.widget.DrawerLayoutImpl no se encuentra en travis support-v4 21.0
- Cómo corregir el permiso gradlew denegado en travis.yml?
- ¿Cómo configurar un emulador que ejecuta API 25 usando una matriz de compilación en Travis CI?
- Almacenamiento en caché del SDK de Android en Travis CI
- Com.android.builder.testing.ConnectedDevice> hasTests FALLA
- Dependencias de Gradle con Travis CI en proyecto Android
- Travis ci build failing - causa: PermGen espacio
Desafortunadamente no estoy autorizado a comentar, ya que sólo quiero completar la respuesta de DominicJodoin. La sangría correcta y un ADB_INSTALL_TIMEOUT
más ADB_INSTALL_TIMEOUT
es necesario como DominicJodoin ya declaró.
En mi opinión, su emulador se está ejecutando pero no está listo para instalar un apk. Con - adb wait-for-device
espera hasta que el dispositivo se conecte. Según la Documentación esto significa:
Tenga en cuenta que este comando no hace que adb espere hasta que el sistema completo se arranque completamente. Por esta razón, no debe prependerlo a otros comandos que requieran un sistema completamente arrancado.
Intenta reemplazar esta línea con - android-wait-for-emulator
en tu travis.yml en su lugar.
Travis.yml
language: android jdk: oraclejdk7 cache: directories: - node_modules sudo: false android: 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 Wait before_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
Editar: sangría fija en el fragmento YAML anterior.
Creo que tu problema es que la imagen de sys-img-armeabi-v7a-android-22
no está disponible todavía en Travis CI.
De hecho, si ejecuta el siguiente comando en Travis CI: android list target
, la salida para android-22
no muestra Tag/ABIs : no ABIs.
Sugiero que intente ejecutar sus pruebas en el sys-img-armeabi-v7a-android-21
mientras tanto.
Usted puede echar un vistazo a un ejemplo de proyecto de Android con pruebas de unidad que bifurcó y se ejecutó con éxito con sus componentes, pero con la imagen de sys-img-armeabi-v7a-android-21
en Travis CI:
- Ejemplo de proyecto
- Registro de construcción de Travis CI
¡Espero que esto ayude!
Editar: la imagen de android-22
debería estar disponible en breve en Travis CI. Consulte la siguiente solicitud de extracción .
He encontrado la clave ADB_TIMEOUT_INSTALL
bit en J-Bossi respuesta, y se inicia el emulador en before_script
como Travis-CI está recomendando, pero tuve problemas con la máquina virtual que se queda sin memoria. Así que en lugar de ejecutar el emulador mientras la compilación se está ejecutando, cambié mi configuración para ejecutar la compilación, luego iniciar el emulador y luego ejecutar las pruebas.
sudo: false language: android env: global: # switch glibc to a memory conserving mode - MALLOC_ARENA_MAX=2 # wait up to 10 minutes for adb to connect to emulator - ADB_INSTALL_TIMEOUT=10 android: components: - platform-tools - extra-android-m2repository - build-tools-22.0.1 - android-22 - sys-img-armeabi-v7a-android-22 script: - ./gradlew assemble lint after_script: # Emulator Management: Create, Start and Wait - 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 & # now run the tests - ./gradlew connectedCheck
- ¿Cuál es la diferencia entre v4.app.NotificationCompat y v7.app.NotificationCompat?
- Registro en un archivo de Android