Я пытаюсь создать общую библиотеку, которая ссылается на другую общую библиотеку.
Вот мой основной модуль Android.mk:
TOP_LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(TOP_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/ $(LOCAL_PATH)/lib/include
LOCAL_MODULE := SightCore-jni
LOCAL_SRC_FILES := SightDemo.cpp SightCore-jni.cpp
LOCAL_SHARED_LIBRARIES := SightAPI
LOCAL_LDLIBS = -llog
include $(BUILD_SHARED_LIBRARY)
У меня также есть встроенная общая библиотека в каталоге ./lib с собственным файлом Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := SightAPI
LOCAL_SRC_FILES := libSightAPI.so
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
Исходный файл SightCore-jni.cpp является интерфейсом jni к общей библиотеке и загружается с помощью команды
System.loadLibrary("SightCore-jni");
В процессе сборки ndk я получаю без компиляции или связывания ошибок.Когда я пытаюсь запустить приложение и получить доступ к одному из собственных методов, я получаю UnsatsfiedLinkError.Я заметил, что если отключить ссылки на SightAPI в моем коде jni и добавить опечатку в строку LOCAL_STATIC_LIBRARIES: = SightAPI, сборка будет успешной, и в ней не будет UnsatisfiedLinkError .
Это означает, что jniу меня хороший код (на самом деле я уверен, что он в порядке ...)
Итак, наблюдение выглядит следующим образом:
Если я скомпилирую общую библиотеку сготовая общая библиотека Я получаю поврежденный .so файл.
Если я скомпилирую тот же проект ndk без ссылки на предварительно собранную общую библиотеку , то не будет проблем загрузка общей библиотеки со стороны java.
Пожалуйста, помогите мне, если можете.
Заранее спасибо,
Ита