Tengo un objeto compartido, que llamaré 'libFoo.so', compilado contra el NDK. Tengo un proyecto de Java (lo llamaré 'jarlib') que hace uso de ese objeto compartido, llamandoCómo cargar un objeto compartido nativo, en un contenedor, desde una aplicación de Android?
System.loadLibrary("Foo");
Ese proyecto java, me exportar como un frasco, y el uso de una aplicación Android. Si comente todos los bits sobre el objeto compartido, el jar funciona bien, y puedo interactuar perfectamente con él.
Puedo usar jarlib, junto con el objeto compartido de una aplicación de Android Unity con el objeto compartido en ./lib/armeabi/libFoo.so, y lo carga todo peachy.
Estoy tratando de usar el jarlib y libFoo.so en mi aplicación de Android que no es unidad, y loadLibrary se niega por completo a encontrar el libFoo.so. He intentado colocarlo para que esté incluido en mi apk en ./lib, así como en ./lib/armeabi, y nada parece hacer que la llamada de carga lo vea.
He intentado incluyendo el libFoo.so en ./lib o ./lib/armeabi del jarlib, pero una vez que trato de instalar/ejecutar mi aplicación para Android, me han dicho:
The library 'jarlib.jar' contains native libraries that will not run on the device.
The following libraries were found:
- libFoo.so
con esto, si está en el ./lib (no ./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.
no estoy seguro de qué combinación me falta, pero estoy seguro de que se puede hacer, sólo parece que no puede entender cómo hacerlo!