Android carga la biblioteca nativa

Estoy intentando cargar una biblioteca que construí con la cadena de herramientas NDK independiente.

Construí libGLmove.so y lo coloqué en libs / armeabi de mi proyecto Eclipse

Sin embargo, la llamada a System.loadLibrary("GLmove") un UnsatisfiedLinkError

¿Alguna idea acerca de cómo resolver el problema o hacer que Android encuentre mi biblioteca? ¿Cómo ndk-build empaqueta la biblioteca después de construirla?

Edit: Las banderas de compilación exactas son:

/Users/thomas/Documents/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/darwin-x86/bin/arm-eabi-g++ –sysroot = / Usuarios / thomas / Documents / android-ndk -r5b / plataformas / android-8 / arco-brazo -march = armv7-a -mfloat-abi = softfp -mfpu = neón -Wl, – fij-cortex-a8 -fno-exceptions -fno-rtti -nostdlib -fpic -shared -o GLmove.so -O3

    5 Solutions collect form web for “Android carga la biblioteca nativa”

    ¿Ha registrado el archivo .APK resultante (utilice una utilidad zip para verlo / desarchivarlo) para ver si su biblioteca lo hace a través del empaquetado? Estoy un poco sospechoso de que no, porque me doy cuenta de que todo lo que se construye en la carpeta "libs" en el proyecto y en mi máquina de construcción entra en una carpeta llamada "lib" (no 's') en el APK .

    No me sorprendería demasiado si resultara que el proceso de creación de Eclipse no empaquetaba bibliotecas que no conoce. Esto es, por supuesto, a diferencia de lo que sucede con los recursos, que sólo se empaquetan en virtud de estar en el lugar correcto.

    Si encuentras que tu biblioteca no está en tu archivo APK, no creo que puedas ponerla manualmente ahí, ya que no aparecerá en el manifiesto del paquete y romperá cualquier firma.

    No menciona si su proyecto Eclipse es un proyecto NDK (haga clic con el botón derecho del ratón en el proyecto, Herramientas de Android-> Agregar soporte nativo). Si no, sospecho que tendrá que convertirlo en uno y luego agregar su biblioteca Al archivo Android.mk como una dependencia y no como destino.

    O: puede intentar poner su biblioteca en / res en el proyecto y utilizar System.load () en lugar de System.loadLibrary () para cargarlo. Admito que nunca he intentado eso, tho.

    Yo estaba corriendo en el mismo problema. Las cosas que me equivoqué.

    1. En el archivo make tenía "LOCAL_SRC_FILES" escrito mal.
    2. En el archivo fuente c tenía el nombre de la biblioteca dentro del nombre del método

    Java_com_my_namespace_libname_activity_methodName(JNIEnv* env, jobject _this) {
    //Fancy Native Junk Here
    }

    Una vez que arreglé esas dos cosas, volví a ejecutar ndk-build y actualizé el proyecto eclipse con F5 y empezó a funcionar.

    Usted no da muchos detalles, pero puede ser que el .so que ha construido se basa en una biblioteca que no está disponible en la versión del teléfono que está usando.

    No he encontrado ninguna manera de decirle al NDK qué versión de SDK de Android está apuntando, así que no tiene ninguna idea muy clara de cómo debería funcionar este lado, pero parece que sería fácil traer una dependencia Desde una versión más reciente de SDK en tu. Así que no se cargará en todos los teléfonos.

    ¿Podría por favor comprobar la sintaxis y la ubicación de System.loadLibrary ("GLmove")

    La llamada System.loadLibrary debe estar en bloque estático del archivo de origen de Java

     static { System.loadLibrary("nativelib"); } 

    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html

    Si su biblioteca nativa necesita otras bibliotecas, deberá cargarlas primero. Si eso no ayuda, compruebe que su directorio de proyecto no contiene espacios.

    También, puede encontrar este tutorial útil: http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.