Android JNI APK Упаковка - PullRequest
       6

Android JNI APK Упаковка

8 голосов
/ 01 февраля 2012

Я реализовал приложение JNI для Android. Это приложение требует, чтобы несколько дополнительных «общих библиотек» были упакованы как часть APK. Используя Ecplise, я добавил эти библиотеки в папку проекта / libs / armeabi.

Однако при запуске приложения (через встроенный отладчик) мои добавленные «Shared Libs» удаляются из папки «armeabi».

  • Как я могу предотвратить удаление этих дополнительных библиотек?
  • Как я могу убедиться, что дополнительные требуемые SO упакованы в APK?

Ответы [ 2 ]

9 голосов
/ 01 февраля 2012

Вам не нужно копировать эти библиотеки в папку libs самостоятельно.Эта работа должна выполняться папкой ndk-build.

. Этих двух шагов должно быть достаточно:

  1. Создать mylibs (вместо этого можно использовать любое другое имя)на корневом уровне вашего проекта.И поместите ваши библиотеки в эту папку.

  2. Для каждой библиотеки добавьте следующие строки перед оператором include $(CLEAR_VARS), заменив mylib именем вашей библиотеки:

    include $(CLEAR_VARS)
    LOCAL_MODULE:=mylib
    LOCAL_SRC_FILES:=../mylibs/libmylib.so
    include $(PREBUILT_SHARED_LIBRARY)
    

(Возможно, вам потребуется немного другой путь для LOCAL_SRC_FILES. Это зависит от вашей конфигурации Eclipse.)

1 голос
/ 20 апреля 2012

Еще одно примечание, которое необходимо добавить в этом контексте, заключается в том, что путь к внешней SharedLib ДОЛЖЕН БЫТЬ относительно каталога jni (или любого другого spcified @ LOCAL_PATH), то есть "LOCAL_SRC_FILES: = ../../ ../Android/ffmpeg/libavcodec/libavcodec.so "будет работать там, где абсолютный путь не будет.

...