Android ndk 8b No se puede cargar la biblioteca

Actualización a ndk 8b Recibo algún informe de fallo (la mayoría de ellos son Galaxy SII con Android 4.03)

java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1286]: 1836 cannot locate '__gnu_thumb1_case_uqi'... at java.lang.Runtime.loadLibrary(Runtime.java:370) at java.lang.System.loadLibrary(System.java:535) at com.iuculano.fplayer.SDLActivity.void onCreate(android.os.Bundle)(SourceFile:324) at android.app.Activity.performCreate(Activity.java:4465) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) at android.app.ActivityThread.access$600(ActivityThread.java:127) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4507) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) at dalvik.system.NativeStart.main(Native Method) 

La excepción es causada por un simple System.loadLibrary("main");

Qué significa eso? cannot locate '__gnu_thumb1_case_uqi'

El __gnu_thumb1_case_uqi es un ayudante que hace un salto indexado en una tabla de conmutación densamente embalada; Implementa rápidamente el interruptor. Tiene dos opciones: evitarlo o vincularlo.

Si aumenta un nivel de optimización (utilizando -O3 ) puede que no necesite este símbolo. Además, el cambio de la CPU puede ayudar, así como el uso de instrucciones thumb2 . La -ffreestanding con la opción -ffreestanding también puede evitar este símbolo. Si tiene control sobre la instrucción switch, puede reemplazarla por una matriz de punteros de función.

Esta rutina está dentro de libgcc . Puede enlazar estáticamente libgcc . En algún lugar del SDK / compilador de Android, debe haber un libgcc.a . Enlace con libgcc.a , utilizando -L y -l o use la opción -static-libgcc linker para obtener el código (consulte http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html ).

Editar: Si no está compilando nada, puede encontrar libgcc.so en su sistema. Puede ser en /lib o /usr/lib o tal vez un lugar extraño para los dispositivos Android. Agregar el directorio donde se ubica libgcc.so a la variable de entorno LD_LIBRARY_PATH también podría solucionar el problema. Tal vez lamentable que Samsung lanzó binarios incompatibles y no tienes manera de solucionar el problema si no está compilando su propio código. El correcto libgcc.so tal vez dentro de algo como /usr/lib/thumb para distribuciones multi-lib. No sé mucho acerca de las cosas de Davlik, pero la JVM de Android podría no apuntar al conjunto correcto de bibliotecas cuando se ejecuta.

¿Está compilando para armv7? Si no lo eres, intenta compilar para armv7.

¿Produce código NDK optimizado para múltiples arquitecturas?

Leer sobre 'brazo' vs 'pulgar' en la respuesta aceptada en el enlace anterior.

Entonces, quita tus instrucciones del config para construir para el pulgar y verifica que estás construyendo para el brazo …

O…

Ill hacer una suposición salvaje … es el orden de la biblioteca que tiene en la declaración de vinculador en su 'Android.mk'

Prueba el foro de google para ndk … buscando 'no se puede localizar el símbolo' …

¿Realmente desesperado?

Consulte la sección "Errores de tiempo de ejecución" aquí

  • Qt5 para Android: incompatible ABI
  • Lectura de la respuesta de Webview de Android
  • Java.lang.ClassNotFoundException: No encontró la clase en la ruta: dexpathlist
  • Vinculación fallando para PCRE cuando se usa la herramienta independiente NDK de Android
  • Devuelve jbyteArray desde c nativo en Android
  • Android NDK, utilizan las funciones de la biblioteca compilada .so en otro proyecto androide NDK
  • DSP biblioteca para hacer una aplicación de Android ..?
  • ¿Cómo realizar llamadas JNI desde un servicio incluso si la aplicación está cerrada?
  • ¿Hay alguna manera de permitir que Android NDK-build utilice una versión más reciente de gcc?
  • Error de depuración de código nativo en android bajo eclipse
  • Uso de la STL con Android NDK C ++
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.