Как загрузить родной общий объект в jar из приложения android?

У меня есть разделяемый объект, который я назову 'libFoo.so', скомпилированный в NDK. У меня есть java-проект (назову его 'jarlib'), который использует этот общий объект, вызывая

System.loadLibrary("Foo");

Этот java-проект я экспортирую как jar и использую в приложении android. Если я закомментирую все биты об общем объекте, jar работает нормально, и я могу прекрасно с ним взаимодействовать.

Я могу использовать jarlib вместе с общим объектом из приложения Unity android с общим объектом в ./lib/armeabi/libFoo.so, и он загружается без проблем.

Я пытаюсь использовать jarlib и libFoo.so в своем приложении для android, не относящемся к Unity, и loadLibrary категорически отказывается находить libFoo.so. Я пробовал поместить его так, чтобы он был включен в мой apk в ./lib, а также в ./lib/armeabi, но ничто не заставляет вызов загрузки увидеть его.

Я пробовал включить libFoo.so в ./lib или ./lib/armeabi jarlib, но когда я пытаюсь собрать/запустить свое android приложение, мне говорят:

The library 'jarlib.jar' contains native libraries that will not run on the device.
The following libraries were found:
  - libFoo.so

с этим, если он находится в ./lib (не ./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.

Я не уверен, какой комбинации мне не хватает, но я уверен, что это можно сделать, я просто не могу понять, как это сделать!

5
задан nitz 8 December 2011 в 16:48
поделиться