Библиотека Android NDK: findLibrary вернул ноль - PullRequest
5 голосов
/ 11 января 2012

Я пытаюсь построить проект среднего размера в Eclipse. Он состоит из основного проекта приложения и двух библиотек Android. Все работало нормально, пока я не добавил очень простую библиотеку JNI в основной проект.

Когда я запускаю приложение на устройстве, я вижу это исключение в LogCat:

01-11 17: 19: 01.421: E / AndroidRuntime (26569): в java.lang.Runtime.loadLibrary (Runtime.java:429) Не удалось загрузить xxx: findLibrary вернул null

Я гуглил подобные проблемы и считаю, что все сделал правильно:

  1. Единственный файл .c и файл Android.mk находятся в папке 'jni'
  2. Я собираю библиотеку с помощью инструмента ndk-build
  3. Библиотека .so правильно размещена в папке 'libs \ armeabi'
  4. Я вижу, что полученный apk-файл действительно содержит мою нативную библиотеку

Когда я создаю тестовый проект и ссылаюсь на тот же нативный код - он работает нормально. Проблема сохраняется в основном проекте. Я уже пытался создать проект Eclipse с нуля, но это не помогло

Я использую Android SDK Tools v.16

Может кто-нибудь помочь мне с предложением?

Спасибо!

1 Ответ

4 голосов
/ 11 января 2012

Хорошо, после двух дней борьбы с Android SDK мне удалось решить мою проблему. Вот некоторые объяснения на случай, если это может помочь кому-то еще.

Моя предыдущая структура проекта:

  1. Проект Android Lib1 (с собственным кодом jni)
  2. Проект Android Lib2 (зависит от Lib1)
  3. Проект App1 (зависит от Lib2)
  4. Проект App2 (с собственным кодом jni; зависит от Lib2)

Первоначальная проблема была замечена, когда я пытался загрузить библиотеку jni в App2. Я до сих пор не понимаю, что мешало среде выполнения найти jni в App2.

Однако решение состояло в том, чтобы удалить проект Lib1 из рабочей области и добавить его как файл JAR в Lib2 и в оба приложения. Теперь я наконец-то могу использовать загрузку jni lib в App2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...