1 votos

Android Emulador - INSTALL_FAILED_NO_MATCHING_ABIS: Error al extraer bibliotecas nativas, res=-113

Cuando intento instalar un archivo apk a través del script de Python monkeyrunner, obtengo el error INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113. ¿Cómo puedo resolver este problema?

El detalle del dispositivo virtual se lista de la siguiente manera:

  • CPU/ARM: x86
  • Nivel de API: 24
  • Objetivo: Android 7.0 (Google Play)

0 votos

Estás tratando de instalar un archivo apk de arm en una arquitectura x86 (o x64) que tiene bibliotecas arm faltantes (libhoudini.so, etc.), por lo tanto estás recibiendo el error.

0 votos

Entonces, ¿cómo puedo instalar esas bibliotecas faltantes? @xavier_fakerat

0voto

xavier_fakerat Puntos 1

Tal como se menciona aquí: INSTALL_FAILED_NO_MATCHING_ABIS when install apk:

INSTALL_FAILED_NO_MATCHING_ABIS ocurre cuando estás intentando instalar una app que tiene bibliotecas nativas y no tiene una biblioteca nativa para la arquitectura de tu CPU. Por ejemplo, si compilaste una app para armv7 y estás intentando instalarla en un emulador que usa la arquitectura Intel en su lugar, no funcionará.

Para resolver esto, necesitas obtener estas bibliotecas en /system/lib.

Esto es posible a través del uso de bibliotecas libhoudini.so. Puedes rootear tu emulador y empujar las bibliotecas a través de adb a /system/lib.

Puedes encontrar las bibliotecas aquí y se dan instrucciones también.

Generalmente necesitas hacer lo siguiente:

  • Descargar un paquete comprimido de internet y extraerlo en / system / lib / arm (o / system / lib64, dependiendo de si la plataforma es de 32 bits o 64 bits). Enlace de descarga de bibliotecas x86 houdini

  • En segundo lugar, en el directorio /proc/sys/ fs/ binfmt_misc bajo el nombre de "register" en el archivo escrito en una cadena de caracteres para decirle al kernel de Linux, que todos usen el conjunto de instrucciones ARM ejecutables y bibliotecas dinámicas ELF. El archivo se abre con el programa houdini, y todos los archivos ELF ejecutables y bibliotecas dinámicas del conjunto de instrucciones ARM64 se abren con el programa houdini64 (en la explicación detallada de binfmt_misc, puedes consultar Cómo especificar un tipo de programa con un programa específico para abrir (a través de binfmt_misc)

  • Puedes volver a montar adb como root y empujar directamente la carpeta arm (con las bibliotecas houdini) a la carpeta /system/lib de la siguiente manera:

    adb -e push C:\Users\User25\Desktop\houdini\arm /system/lib

    (Recuerda establecer la ruta correcta y los permisos adecuados)

  • Otra segunda opción que probé personalmente es obtener una imagen avd con el puente ARM nativo ya habilitado (en caso de que encuentres problemas al rootear tu emulador)

  • Preferiblemente obtener el avd de RemixOS player o Genymotion y extraer el system.img, userdata.img, ramdisk.img y otros archivos como build.prop, etc y colocarlos en la carpeta de imágenes del sistema de tu emulador (por ejemplo, si las imágenes descargadas son para un avd x86, cópialas al directorio de system-images de tu emulador y pégalas en la carpeta x86 del nivel api correcto - algo así como \system-images\android-26\google_apis\x86 y crear un avd basado en eso (esto es útil solo para probar tus aplicaciones ARM en tu avd x86)

    Deberías resolver este error, si todo falla, simplemente usa un emulador con herramientas de traducción ARM.

0 votos

Nota: el archivo houdini vinculado es solo un archivo tar, no .tar.gz (a pesar del nombre). Use "tar xvf archivo" para descomprimirlo.

0 votos

Gracias, estaba obteniendo ese error al intentar instalar el APK de mi juego móvil de Unity en un emulador v8.1.1. Fui a "Configuración del jugador" -> "Jugador" -> expandí "Otras configuraciones" y bajé y marqué la casilla "x86 (Chrome OS)" debajo de "Configuración". Las únicas imágenes que puedo descargar en Android Studio para v8.1.1 son x86 o x86_64. Después de construir el APK con eso marcado, la instalación funcionó correctamente.

0 votos

Este enlace ya no es válido translate.googleusercontent.com/…

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