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

Я пытаюсь создать проект среднего размера в 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

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

Спасибо!


person Anton    schedule 11.01.2012    source источник


Ответы (1)


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

person Anton    schedule 11.01.2012
comment
Не могли бы вы уточнить, что вы имеете в виду? В настоящее время у меня такая же проблема, но я смущен вашей настройкой. У меня есть один проект Android, зависящий от одной библиотеки JNI, в которой есть только один файл .c/.h. - person JuiCe; 31.07.2012
comment
@JuiCe Я думаю, что ваша проблема не связана с тем, что я испытал. Моя проблема была вызвана попыткой загрузить библиотеку JNI, находящуюся в проекте библиотеки Android. Вы должны проверить другие сообщения в этой теме - person Anton; 31.07.2012
comment
Расскажите мне об этом, худший опыт кодирования, который у меня когда-либо был. - person JuiCe; 31.07.2012