NDK позволяет связываться с готовыми пользовательскими библиотеками с помощью переменной PREBUILT_SHARED_LIBRARY.
Предполагая, что библиотека, которую вам нужно связать, называется librandom.so, создайте папку libs
в подпапке jni
папки проекта:
mkdir -p jni/libs
cp librandom.so jni/libs
Затем просто создайте файл jni/libs/Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := random
LOCAL_SRC_FILES := librandom.so
include $(PREBUILT_SHARED_LIBRARY)
Вы можете создать раздел для каждой готовой библиотеки, все они размещены в jni/libs
.
Затем вам просто нужно включить вышеуказанный файл в ваш jni/Android.mk, чтобы все заработало. В документации NDK рекомендуется делать это в конце Android.mk, а не в середине:
include $(LOCAL_PATH)/libs/Android.mk
Однако вам нужно будет сделать это перед модулем, для которого требуется эта библиотека.
Для связывания вам необходимо добавить следующее в раздел модуля, который ссылается на предварительно созданную библиотеку.
LOCAL_SHARED_LIBRARIES := random
Затем, когда вы выполните ndk-build, он скопирует эту библиотеку в libs/armeabi/
перед сборкой модуля, и все готово.
Примечание. Это не решает проблемы с обязательными заголовками. Вам все равно нужно будет добавить расположение заголовков библиотеки в переменную LOCAL_C_INCLUDES
в модуле, которому это требуется.
person
Samveen
schedule
28.04.2012