2 votos

INSTALL_FAILED_NO_MATCHING_ABIS en Android 9

Estoy tratando de instalar un APK que contiene bibliotecas nativas armeabi-v7a, en un emulador con KVM habilitado. Cuando intento instalar el APK en el dispositivo en ejecución, me encuentro con este error: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

Según https://developer.android.com/studio/releases/emulator#30-0-0, el error anterior no debería ocurrir en Android 9 o 11

Imágenes del sistema Android 11

Ahora puedes crear un AVD que ejecute Android 11 seleccionando cualquiera de las imágenes del sistema disponibles para el nivel de API 30:

  • x86: Incluye ABI x86 y ARMv7.
  • x86_64: Incluye ABI x86, x86_64, ARMv7 y ARM64.

Soporte para binarios ARM en imágenes del sistema Android 9 y 11

Si anteriormente no podías usar el Emulador de Android porque tu aplicación dependía de binarios ARM, ahora puedes usar la imagen del sistema x86 de Android 9 o cualquier imagen del sistema de Android 11 para ejecutar tu aplicación; ya no es necesario descargar una imagen de sistema específica para ejecutar binarios ARM. Estas imágenes del sistema Android 9 y Android 11 admiten ARM de forma predeterminada y brindan un rendimiento notablemente mejorado en comparación con aquellos con emulación ARM completa.

Mi entorno es Ubuntu 18.04 (LTS). Aquí hay algunos de mis comandos de configuración:

tools https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip

sdkmanager --install "system-images;android-28;default;x86" "emulator" "platform-tools" "platforms;android-28" (en este paso siéntete libre de reemplazar x86 con x86_64) Ten en cuenta que he probado con servicios de google-apis/playstore y permite la instalación pero falla en tiempo de ejecución.

avdmanager create avd -n "x86" -k "system-images;android-28;default;x86" (se aplican los mismos pasos de reemplazo)

`emulator @x86 -no-boot-anim -noaudio -no-window -verbose -wipe-data -partition-size 1024 -qemu -enable-kvm

¿Es algo que me estoy perdiendo? Editar el archivo build.prop no ayuda.

2voto

pr0nin Puntos 353

Aunque Google afirma que esto funciona para las imágenes de Android 9 y 10, según mi experiencia, solo funciona para las imágenes de vista previa de Android 11.

He probado esto en Windows utilizando las últimas imágenes x86 predeterminadas de Google habilitadas que se muestran en el administrador de emuladores para Android 10 y 11. Como aplicación de prueba, utilicé un archivo APK de Telegram solo para armv7 del 2019:

  • Android-R - (vista previa de Android 11) Imagen del sistema de Google Play Intel x86 Atom (revisión: 1)
    • Instalación exitosa, inicio de la aplicación exitoso
  • Android-29 (Android 10) - Imagen del sistema Google Play Intel x86 Atom (revisión: 8)
    • Fallo en la instalación INSTALL_FAILED_NO_MATCHING_ABIS

Por lo tanto, mis resultados contradicen la descripción de Google que citaste en tu pregunta. Por el momento, parece que solo las imágenes x86 de vista previa de Android R son capaces de ejecutar aplicaciones armv7.

Entorno de prueba: Windows 10 de 64 bits con Intel Haxm instalado.

0 votos

Voy a intentarlo, ¿no especificas una opción --channel? Además, Android-29 es Android 10 según developer.android.com/studio/releases/platforms#9.0 ¿o es eso un error tipográfico? No pude ver soporte para la traducción de arm para el nivel de api 29 en su documento. También estoy asumiendo que tienes habilitado haxm, solo para saber que potencialmente KVM no está causando el problema (me refiero a que debería indicar en la documentación que se debe usar junto con la aceleración de hardware)

1 votos

@Anton Android-29 no es un error tipográfico. He probado una imagen para 10 y la vista previa para 11. No uso la línea de comandos en absoluto, solo el administrador de avd. Se ha instalado y habilitado la última versión de Haxm. Pero como Haxm solo es para x86, la emulación de arm debe ser realizada por el sistema operativo que se ejecuta en el emulador.

0 votos

Voy a marcar la respuesta como correcta, pero la mía aún no funciona, es porque estoy ejecutando un emulador headless y solo admite hasta api 27 (androidstudio.googleblog.com/2019/02/emulator-2818-canary.h‌​tml)

2voto

user36440 Puntos 115

La otra respuesta es genial, pero quería añadir un poco más de detalle. El comentario sobre Android 9 o 11 es correcto, pero depende del APK.

Si el APK es armeabi-v7a, entonces funcionará en Android 9 (API 28). Además, el emulador debe ser x86.

Si el APK es arm64-v8a, entonces funcionará en Android 11 (API 30). Además, el emulador debe ser x86_64.

https://stackoverflow.com/questions/36414219/install-failed-no-matching-abis

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X