2012-01-11 12 views
5

Estoy intentando crear un proyecto de tamaño mediano en Eclipse. Consiste en el proyecto de la aplicación principal y dos bibliotecas de Android. Todo funcionó bien hasta que agregué una biblioteca JNI muy simple al proyecto principal.Biblioteca Android NDK: findLibrary devuelto nulo

Cuando ejecuto la aplicación en el dispositivo que ver esta excepción en LogCat:

01-11 17: 19: 01,421: E/Android Runtime (26569): en java.lang.Runtime.loadLibrary (Runtime.java:429) no puede mostrarse xxx: findLibrary volvió nula

I googled alrededor por problemas similares y creo que lo hice todo correctamente:

  1. El único archivo .c y el archivo Android.mk se colocan en la carpeta '' JNI
  2. que construir la biblioteca con la herramienta NDK-build
  3. La biblioteca .so está colocado correctamente en la carpeta 'libs \ armeabi'
  4. veo que el archivo APK que resulta en efecto, contiene mi biblioteca nativa

Cuando creo un proyecto de prueba y enlace a la misma código nativo - que funciona bien. El problema persiste en el proyecto principal. Ya he intentado crear proyecto Eclipse a partir de cero, pero no sirvió de nada

utilizo Android SDK Tools v.16

Puede alguien por favor me ayude con una sugerencia?

Gracias!

Respuesta

4

Ok, después de dos días peleando con el SDK de Android me las arreglé para resolver mi problema. Aquí hay alguna explicación en caso de que pueda ayudar a alguien más.

Mi anterior estructura del proyecto:

  1. proyecto Android Lib1 (con su propio código JNI)
  2. proyecto
  3. Android de Lib2 (depende de Lib1)
  4. proyecto App1 (depende de Lib2)
  5. App2 proyecto (con su propio código jni; depende de Lib2)

El problema original se ha visto cuando traté de cargar jni libr aria en App2. Todavía no entiendo qué impedía que el tiempo de ejecución encontrara el jni en la App2.

Sin embargo, la solución fue eliminar el proyecto Lib1 del área de trabajo y agregarlo como archivo JAR a Lib2 y a ambas aplicaciones. Ahora finalmente puedo usar load the jni lib en la App2.

+1

¿Podría aclarar a qué se refiere? Actualmente estoy teniendo el mismo problema, pero estoy confundido por su configuración. Tengo un único proyecto de Android que depende de una sola biblioteca JNI, que solo tiene un archivo .c/.h dentro de ella. – JuiCe

+0

@JuiCe Creo que su problema no está relacionado con lo que experimenté. Mi problema fue causado por intentar cargar la biblioteca JNI que reside en un proyecto de biblioteca de Android. Deberías revisar las otras publicaciones sobre este tema – Anton

+0

Lo tengo funcionando, gracias por la respuesta. – JuiCe