Biblioteca no encontrada debido a targetSdkVersion (armeabi-v7a y libcryptopp.so)
He creado un proyecto de ejemplo que utiliza las bibliotecas nativas de C ++ de Crypto ++ y el NDK para generar pares de claves ECDH. Usted puede encontrar el proyecto aquí .
Este proyecto se ejecuta perfectamente bien en la mayoría de los dispositivos android (corriendo en un puñado de dispositivos 4.4 y 5.0). Sin embargo, recientemente he ejecutado la aplicación en un Nexus 5 y Nexus 7, ambos con Android 6.0.1, y la aplicación se estrelló con el siguiente error.
- Android NDK y C + + STL
- Cómo capturar excepciones generadas con código nativo que se ejecuta en Android
- ¿Cuáles son las consecuencias si intentamos conectar un hilo nativo permanentemente a la DVM (JVM)?
- Android poco convencional y desagradable durante el código de carga de JNI / OpenGL ES
- ¿Podemos acceder al controlador de micrófono de mi teléfono Android
java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libcryptopp.so" not found
No estoy realmente seguro de lo que está pasando aquí, ya que el proyecto obviamente tiene estos archivos, y deberían estar bien. Esto parece que podría ser algún tipo de problema relacionado con NDK, pero no estoy realmente seguro.
He intentado quitar la carpeta armeabi-v7a, lo que obligó a la aplicación a utilizar los archivos armeabi en los dispositivos Nexus, pero no pudo encontrar esos archivos tampoco.
Abrí el apk y todos los archivos .so correctos están ahí con las carpetas apropiadas.
No estoy seguro de si se trata de un problema de Android Marshmallow, un problema de arquitectura de Nexus o algún problema de compilación de archivos .so. Soy nuevo en el uso de la NDK por lo que apreciaría ideas sobre dónde buscar para arreglar esto.
EDIT : Después de mirar en un poco más se ve como esto es un problema de Android Marshmallow. Un tema relacionado fue mencionado aquí . Cambiar mi targetSdkVersion
a 22
"arregla" el accidente. Pero, obviamente, esto no es un arreglo futuro muy amigable.
Aparentemente en Android Marshmallow, cambiaron de OpenSSL a BoringSSL. Este es probablemente el problema raíz, como me imagino Crypto ++ utiliza la funcionalidad de OpenSSL y enlaces en contra de ella?
Todavía buscando alrededor de una corrección real que me permite targetSdkVersion 23
. Probablemente probar algunas de las soluciones enumeradas en este artículo y ver qué pasa.
EDIT 2 : Crypto ++ no enlaza con OpenSSL por lo que va esa teoría. La ayuda aquí todavía es apreciada.
- Rellenar los datos en un mapa de bits de Android tan pronto como sea posible desde C
- Firma de android apk con gradle-experimental: 0.2.0
- Cómo pasar correctamente un archivo FileDescriptor a FFmpeg usando JNI en Android
- Cómo conectar Kinect a Android
- ¿Está proporcionando una implementación para todos los métodos nativos requeridos?
- Android ndk: Problema para la llamada del método Java desde c ++ con jni
- No se puede hacer JNI llamar desde c ++ a java en android lollipop usando jni
- Android NDK / JNI: Creación de una biblioteca compartida que depende de otras bibliotecas compartidas
- (httplog) -static: issbsettingenabled false android
- ¿Cómo puedo activar automáticamente el inicio automático de mis aplicaciones en el menú de seguridad Xiaomi Mi4i?