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
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