2012-01-11 12 views
5

Sto cercando di creare un progetto di medie dimensioni in Eclipse. Consiste nel progetto principale dell'app e in due librerie Android. Tutto ha funzionato bene fino a quando ho aggiunto una libreria JNI molto semplice al progetto principale.Libreria NDK Android: findLibrary restituita null

Quando eseguo l'applicazione sul dispositivo vedo questa eccezione in LogCat:

01-11 17: 19: 01,421: E/AndroidRuntime (26569): a java.lang.Runtime.loadLibrary (Runtime.java:429) Impossibile caricare xxx: findLibrary restituito nulla

I googled intorno per problemi simili e credo che ho fatto tutto correttamente:

  1. L'unico file .c e il file Android.mk sono collocati nella cartella 'jni'
  2. costruisco biblioteca strumento NDK-build
  3. La libreria .so è correttamente inserito nella cartella 'libs \ armeabi'
  4. vedo che il file apk risultante contenga in effetti la mia libreria nativa

Quando creo un progetto di test e link per lo stesso codice nativo - funziona benissimo. Il problema persiste nel progetto principale. Ho già provato a creare il progetto Eclipse da zero, ma non ha aiutato

Io uso SDK Tools Android V.16

Qualcuno può aiutarmi con un suggerimento?

Grazie!

risposta

4

Ok, dopo due giorni di combattimento con l'SDK Android sono riuscito a risolvere il mio problema. Ecco qualche spiegazione nel caso in cui possa aiutare qualcun altro.

mio precedente struttura del progetto:

  1. progetto Lib1 Android (con il proprio codice JNI)
  2. progetto
  3. LIB2 Android (dipende Lib1)
  4. progetto App1 (dipende LIB2)
  5. App2 progetto (con il proprio codice jni, dipende da Lib2)

Il problema originale è stato visto quando ho provato a caricare jni libr in App2. Continuo a non capire cosa impediva al runtime di trovare il jni in App2.

Tuttavia, la soluzione era rimuovere il progetto Lib1 dallo spazio di lavoro e aggiungerlo come file JAR a Lib2 e ad entrambe le app. Ora sono finalmente in grado di utilizzare caricare jni lib in App2.

+1

Potrebbe chiarire cosa intendi? Attualmente sto avendo lo stesso problema ma sono confuso dal tuo setup. Ho un singolo progetto Android a seconda di una singola libreria JNI, che contiene solo un file .c/.h al suo interno. – JuiCe

+0

@JuiCe Penso che il tuo problema non sia legato a ciò che ho vissuto. Il mio problema è stato causato dal tentativo di caricare la libreria JNI che risiede in un progetto di libreria Android. Dovresti controllare gli altri post su questo argomento – Anton

+0

Funziona, grazie per la risposta. – JuiCe

Problemi correlati