Ho un oggetto condiviso, che chiamerò 'libFoo.so', compilato contro l'NDK. Ho un progetto java (lo chiamerò 'jarlib') che fa uso di tale oggetto condiviso, chiamandoCome caricare un oggetto nativo condiviso, in un barattolo, da un'applicazione Android?
System.loadLibrary("Foo");
Quel progetto java, ho esportare come un vaso, e utilizzare in un'applicazione Android. Se commento tutti i bit sull'oggetto condiviso, il barattolo funziona bene e sono in grado di interagire perfettamente con esso.
Posso usare jarlib, insieme all'oggetto condiviso da un'applicazione Android Unity con l'oggetto condiviso in ./lib/armeabi/libFoo.so, e lo carica su tutto peachy.
Sto provando a utilizzare jarlib e libFoo.so nella mia app Android non unità, e loadLibrary si rifiuta assolutamente di trovare libFoo.so. Ho provato a posizionarlo in modo che sia incluso nel mio apk in ./lib, così come ./lib/armeabi, e niente sembra far sì che la chiamata di caricamento lo veda.
Ho provato compreso il libFoo.so in ./lib o ./lib/armeabi del jarlib, ma una volta che provo ad installare/correre la mia app Android, mi hanno detto:
The library 'jarlib.jar' contains native libraries that will not run on the device.
The following libraries were found:
- libFoo.so
con questo, se è nel ./lib (non ./lib/armeabi)
Additionally some of those libraries will interfer with the installation of the application because of their location in lib/
lib/ is reserved for NDK libraries.
non sono sicuro di quale combinazione che mi manca, ma sono sicuro che si può fare, ho solo non riesco a capire come farlo!