2012-01-11 3 views
5

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

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

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

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

  1. Единственный .c файл и Android.mk файл помещаются в папку «JNI»
  2. Я строю библиотеку с инструментом NDK-сборки
  3. .so библиотека правильно размещена в «ЛИЭС \ armeabi» папку
  4. Я вижу, что полученный файл APK действительно содержит мою родную библиотеку

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

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

Может кто-нибудь, пожалуйста, помогите мне с предложением?

Спасибо!

ответ

4

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

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

  1. проект Android Lib1 (с собственным кодом JNI)
  2. проект
  3. Android Lib2 (зависит от Lib1)
  4. проект App1 (зависит от Lib2)
  5. App2 проект (с его собственным jni-кодом, зависит от Lib2)

Оригинальная проблема была замечена, когда я попытался загрузить jni libr в приложении 2. Я все еще не понимаю, что мешало runtime отыскать jni в App2.

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

+1

Не могли бы вы пояснить, что вы имеете в виду? В настоящее время у меня такая же проблема, но я смущен вашей настройкой. У меня есть один проект Android в зависимости от одной библиотеки JNI, в которой есть только один .c/.h файл. – JuiCe

+0

@JuiCe Я думаю, что ваша проблема не связана с тем, что я испытал. Моя проблема была вызвана попыткой загрузить библиотеку JNI, находящуюся в проекте библиотеки Android. Вы должны проверить другие сообщения по этой теме – Anton

+0

Получил это работу, спасибо за ответ, хотя. – JuiCe

Смежные вопросы