"Invalid –abi armeabi-v7a para el destino seleccionado" con las API de Google

Estoy tratando de actualizar un proyecto de Android desde el API de nivel 19 SDK y crear herramientas para el nivel más reciente API 21, incluyendo las API de Google. Todo funcionaba bien en Travis antes de esta actualización (por ejemplo, vea esta compilación ).

Cuando corro con el nuevo nivel de la API veo el error siguiente:

0.42s$ echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI Valid ABIs: no ABIs. Error: Invalid --abi armeabi-v7a for the selected target. The command "echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI" failed and exited with 1 

Vea esta compilación para la salida completa de Travis.

Aquí está mi .travis.yml:

 language: android jdk: oraclejdk7 # Turn off caching to avoid any caching problems cache: false # Use the Travis Container-Based Infrastructure (see #203) sudo: false env: global: - ANDROID_API_LEVEL=21 - ANDROID_BUILD_TOOLS_VERSION=21.1.2 - ANDROID_ABI=armeabi-v7a android: components: - platform-tools - tools - build-tools-$ANDROID_BUILD_TOOLS_VERSION - android-$ANDROID_BUILD_TOOLS_VERSION # For Google Maps API v1 - addon-google_apis-google-$ANDROID_API_LEVEL # Google Play Services - extra-google-google_play_services # 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-android-$ANDROID_BUILD_TOOLS_VERSION before_script: # Create and start emulator - echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI - emulator -avd test -no-skin -no-audio -no-window & script: - ./wait_for_emulator - ./gradlew connectedCheck -PdisablePreDex 

Mi build.gradle está aquí .

De nuevo, lo único que cambié en la nueva compilación de Travis es el nivel de API y el nivel de herramientas de construcción.

Aparentemente, los nombres de las imágenes del sistema de API de Google y los parámetros de ABI cambiaron:

  • ABI = armeabi-v7a a google_apis/armeabi-v7a
  • Sistema de imagen = sys-img-armeabi-v7a-android-21 a sys-img-armeabi-v7a-addon-google_apis-google-21

He arreglado esto mediante la actualización de mi ANDROID_ABI variable y el nombre del componente de la imagen del sistema – los nuevos valores son:

 - ANDROID_ABI=google_apis/armeabi-v7a ... # Specify at least one system image, - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL 

Aquí está la sección entera en contexto:

 env: global: - ANDROID_API_LEVEL=21 - ANDROID_BUILD_TOOLS_VERSION=21.1.2 - ANDROID_ABI=google_apis/armeabi-v7a android: components: - platform-tools - tools - build-tools-$ANDROID_BUILD_TOOLS_VERSION - android-$ANDROID_API_LEVEL # For Google Maps API v1 - addon-google_apis-google-$ANDROID_API_LEVEL # Google Play Services - extra-google-google_play_services # 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-addon-google_apis-google-$ANDROID_API_LEVEL 

Después de estos cambios, se genera correctamente .

EDIT Sept 12th, 2016

Al parecer, hubo otro cambio a mediados de 2016 que causa el mismo problema. Por ejemplo, aquí hay una compilación fallida con el mismo mensaje de error.

Los siguientes cambios fueron necesarios para corregir las compilaciones de Travis:

  • Agregar una variable de etiqueta ANDOID_TAG ABI separada
  • Duplicar herramientas para obtener el nuevo repository-11.xml e instalar las herramientas SDK de Android 25.1.x
  • Cambiar los nombres de las imágenes del sistema para que coincidan con los nuevos SDK de Android
  • Cambiar el comando emulator start para usar la nueva variable de etiqueta ABI para especificar las API de Google

Por ejemplo:

- ANDROID_ABI=google_apis/armeabi-v7a

…cambiado a:

- ANDROID_ABI=armeabi-v7a

- ANDROID_TAG=google_apis

- tools deben ser listadas dos veces.

Las imágenes del sistema:

- sys-img-armeabi-v7a-addon-google_apis-google-23

- sys-img-armeabi-v7a-addon-google_apis-google-23

… necesitaba ser cambiado a:

- sys-img-armeabi-v7a-google_apis-23

- sys-img-armeabi-v7a-google_apis-23

La línea para iniciar el emulador cambió de:

- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:23" --abi $ANDROID_ABI

…a:

- echo no | android create avd --force -n test -t "android-23" --abi $ANDROID_ABI --tag $ANDROID_TAG

Vea este commit para un changeset de lo que necesita ser cambiado, este archivo para un script completamente funcional, y vea https://github.com/travis-ci/travis-ci/issues/6122#issuecomment-239073557 para más detalles.

Gracias a @Ardock por los arreglos!

EDIT 28 de noviembre de 2016

Parece que el emulador API Level 23 no está trabajando en Travis con el anterior – android create avd --force -n test -t "android-23" --abi "armeabi-v7a" --tag "google_apis" produce el error Error: Invalid --tag google_apis for the selected target. Para obtener más detalles, consulte https://github.com/OneBusAway/onebusaway-android/issues/720 .

Además, aparentemente ABI de ARM no están actualmente disponibles para API Level 24 o 25 (Android 7.1.1) – vea este problema para una captura de pantalla de SDK Manager.

Se publicó el problema en Android Studio Google+ Community aquí: https://plus.google.com/+SeanBarbeau/posts/adNGGtJFhvi?sfc=true

  • Leer versionName de build.gradle en bash
  • Travis CI para Android
  • Prueba de instrumentación de Android falla en Travis CI AVD pero funciona en emulador local
  • No se puede configurar travis para trabajar en el proyecto android
  • Travis CI skip pruebas (Gradle Android proyecto)
  • Travis.yml ./gradlew: Permiso denegado
  • ¿Es gradlew obligatorio para que travis CI funcione?
  • ¿Cómo configurar un emulador que ejecuta API 25 usando una matriz de compilación en Travis CI?
  • Dependencias de Gradle con Travis CI en proyecto Android
  • Cómo ejecutar Prueba Travis-CI y Espresso
  • Travis CI Android - No encuentra la versión que coincide
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.