#android #c #android-studio #cmake #android-ndk
#Android #c #android-studio #cmake #android-ndk
Вопрос:
Я использую Android Studio для создания собственного проекта на C . Существует библиотека зависимостей (назовем ее lib.so ), который должен быть связан с библиотекой JNI для разрешения нескольких его символов. Однако я не хочу, чтобы эта библиотека была включена в APK, поскольку это заглушенная библиотека, которая будет использоваться только для целей связывания. Правильное lib.so с правильными определениями символов уже присутствует на устройстве Android, где я хочу запустить встроенный APK.
Я импортирую заглушенную библиотеку lib.so быть связанным с библиотекой JNI как:
add_library(ИМПОРТИРОВАННАЯ ОБЩАЯ библиотека) set_target_properties(lib.so ИМПОРТИРОВАННЫЕ СВОЙСТВА_LOCATION «location_of_lib.so «)
add_dependencies(native-jni lib}) target_link библиотеки (native-jni lib)
Таким образом, компиляция APK проходит успешно, но библиотека подключается к APK.
Я использую AS 4.0.1, NDK r19c, CMake 3.17. Тот же проект, который использовался для работы, как ожидалось, т. Е. Не Объединял библиотеку lib.so с APK, но каким-то образом он начал связывать его. Любые рекомендации по отладке этой проблемы будут оценены.
Ответ №1:
Попробуйте использовать find_library
для этого. Поместите свой готовый lib.so
(по крайней мере, плохое имя liba.so
) в какой-то путь и добавьте его в CMAKE_FIND_ROOT_PATH
:
list(APPEND CMAKE_FIND_ROOT_PATH ${PREBUILT_LIBS_DIR}/${ANDROID_PLATFORM}/${ANDROID_ABI}/a)
пример, как это может выглядеть:
~/my-proj/prebuilt-libs/android-28/x86/a/lib/liba.so
Затем найдите библиотеку и свяжите ее:
find_library(lib-a a)
target_link_libraries(native-jni lib-a)