Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Библиотека Android NDK: findLibrary вернула значение null

Автор вопроса: AntonОтветов: 1

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

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

01-11 17:19:01.421: E/AndroidRuntime(26569):at 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

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

Спасибо!

androidandroid-ndk

Ответы

Ответ 1 · рейтинг 4 · Anton

Хорошо, после двух дней борьбы с 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 в файле App2.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы