Я пытаюсь создать общую библиотеку, которая ссылается на другую разделяемую библиотеку.
Вот мой основной модуль 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-build я получаю отсутствие компиляции или привязки.
Когда я пытаюсь запустить приложение и получить доступ к одному из собственных методов, я получаю UnsatsfiedLinkError.
Я заметил, что если отключить ссылки на SightAPI в моем jni-коде и поместить опечатку в строку LOCAL_STATIC_LIBRARIES: = SightAPI, сборка будет успешной и не будет UnsatisfiedLinkError.
Это означает, что код jni, который у меня есть, хорош (я действительно уверен, что все в порядке...)
Таким образом, наблюдение выглядит следующим образом:
Если я скомпилирую общую библиотеку с предварительной библиотекой, я получаю файл поврежденный.so.
Если я скомпилирую один и тот же проект ndk без ссылки на предварительно созданную общую библиотеку, без проблем загружает общую библиотеку со стороны java.
Пожалуйста, помогите мне, если сможете.
Спасибо заранее,
Ита