saber - Utilice bibliotecas jni de 32 bits en Android de 64 bits
como saber si mi android es de 32 o 64 bits (6)
el punto es convertir el entorno de ejecución a 32 bits
- agregue el siguiente contenido en ''build.gradle'' ''defaultConfig'': ndk {abiFilters "armeabi", "armeabi-v7a", "x86", "mips"}
- agregar android.useDeprecatedNdk = true en gradle.properties
- agrega una nueva carpeta llamada armeabi bajo las libs, luego copia un archivo ".so" de 32 bits en la nueva carpeta
Intenté ejecutar una aplicación usando una biblioteca nativa en el Nexus 9.
La aplicación sale con un mensaje de error:
java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit
¿Hay alguna solución conocida para este problema (excepto, por supuesto, volver a compilar la biblioteca y hacer que la apk sea más grande)?
Nop, necesitas hacer que la biblioteca nativa sea compatible con 64 bits para que funcione.
Consulte la documentación oficial: Consejos JNI: Consideraciones de 64 bits
https://source.android.com/source/64-bit-builds.html
Prueba esto en tu Android.mk
LOCAL_MULTILIB := 32
Encontré una explicación: Android de 64 bits puede usar bibliotecas nativas de 32 bits como alternativa, solo si System.loadlLibrary () no puede encontrar nada mejor en la ruta de búsqueda predeterminada. Obtiene un UnsatisfiedLinkError si fuerza al sistema a cargar la biblioteca de 32 bits utilizando System.load () con la ruta completa de la biblioteca. Así que la primera solución es usar System.loadLibrary () en lugar de System.load ().
Una cosa adicional que debe tenerse en cuenta es que las bibliotecas no se pueden combinar: el comportamiento alternativo solo se aplica a la primera biblioteca que cargue su aplicación. Si el primero es de 64 bits, la misma aplicación no puede cargar bibliotecas de 32 bits, y viceversa.
Me encontré con el mismo problema, cuando hice la actualización de Android Studio 2.1 a 2.2.3 (con ndk v.13.1), y ninguna sugerencia encontrada en google realmente me ayudó (como usar abiFilters, excluir ''lib / x86_64 / lib .... entonces '', LOCAL_MULTILIB: = 32, o TARGET_PREFER_32_BIT: = verdadero, ...).
Finalmente, pude hacer que funcionase nuevamente con la última versión AS v2.2.3 (sin cambiar nada en Android.mk o en build.gradle), simplemente usando mi compilador ndk anterior, es decir, android-ndk-r10e
Construí la biblioteca manualmente con ndk-build para "armeabi-v7a" y "x86" solamente, y funcionó como un encanto en Android con arm64.
Para mí, el problema fue que habilité la función avanzada de creación de perfiles en la configuración de compilación de la aplicación