"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:
- Falso positivos: junit.framework.AssertionFailedError: EditText no se encuentra
- La construcción de Travis CI no funciona con Android Constraint Layout
- Travis CI Android Tests: no hay dispositivos conectados
- Las pruebas de Android fallan en Travis con ShellCommandUnresponsiveException
- Almacenamiento en caché del SDK de Android en Travis CI
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.
- Travis CI Build falla en la aplicación de Android Versión de major.minor no compatible 52
- ¿Por qué Travis CI descarga todo lo que construye cada vez?
- Error de compilación de Android: filtro de paquete desconocido
- Cómo corregir el permiso gradlew denegado en travis.yml?
- Travis CI falló porque no puede aceptar licencia Constrain Layout
- ¿Cómo debo configurar Travis-CI para una biblioteca de Android?
- Travis CI para Android - Error de compilación: No se pudo encontrar el destino y no se encontraron dependencias
- Archivo de clase para android.support.v4.widget.DrawerLayoutImpl no se encuentra en travis support-v4 21.0
Aparentemente, los nombres de las imágenes del sistema de API de Google y los parámetros de ABI cambiaron:
- ABI =
armeabi-v7a
agoogle_apis/armeabi-v7a
- Sistema de imagen =
sys-img-armeabi-v7a-android-21
asys-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
- Errores que generan apk firmado para su lanzamiento: Proguard config
- Guardar lienzo a continuación, restaurar, ¿por qué es eso?