Ho un progetto Android con una struttura di cartelle libs
come questa:Perché non è libgnustl_shared.so essere copiato dal mio APK?
/libs
/armeabi
libfoo.so
libbar.so
libmystuff.so
libgnustl_shared.so
/armeabi-v7a
libfoo.so
libbar.so
foo
e bar
sono librerie di terze parti, mystuff
è la mia libreria da un progetto separato Android JNI che richiede gnustl_shared
, che è della stessa Progetto JNI.
Quando costruisco il mio progetto in Eclipse, posso visualizzare il contenuto dell'APK generato utilizzando unzip -l
e in effetti mostra che tutti questi file di libreria sono stati inclusi.
Tuttavia, dopo aver installato l'APK, la cartella /data/data/com.myproject/lib
non contiene libgnustl_shared.so
, anche se sono presenti le altre librerie.
Questo porta inevitabilmente alla seguente errore:
UnsatisfiedLinkError: Couldn't load gnustl_shared: findLibrary returned null
Come un controllo di integrità, mi sono imbattuto adb push ./libs/armeabi/libgnustl_shared.so /data/data/com.myproject/lib
e abbastanza sicuro, l'applicazione si avvia come previsto.
Non vedo nulla nel log di compilazione o nella console di Eclipse che suggerisce l'esistenza di problemi nella creazione o nell'installazione dell'app.
- Cosa potrebbe impedire di installare
libgnustl_shared.so
con la mia applicazione? - Dove posso andare per sapere cosa succede quando un APK è installato?
Fatemelo sapere in un commento se ci sono informazioni specifiche posso fornire che potrebbe aiutare.
doppio controllare la Mainfest per le dichiarazioni, tra cui tutte le librerie. –
@RobertRowntree - Potresti spiegare cosa intendi? Non ho mai avuto bisogno di specificare le librerie in 'AndroidManifest.xml' per altri progetti, se è quello a cui ti stai riferendo. – namuol
leggi qui: http://developer.android.com/tools/projects/projects-cmdline.html#ReferencingLibraryProject –