首页 > 解决方案 > Android Studio 将存根库捆绑到 APK 中

问题描述

我正在使用 Android Studio 构建一个原生 C++ 项目。有一个依赖库(我们称之为 lib.so),它需要与 JNI 库链接以解析它的一些符号。但是,我不希望将此库捆绑到 APK 中,因为这是一个存根库并且仅用于链接目的。我要运行构建的 APK 的 Android 设备上已经存在具有正确符号定义的正确 lib.so。

我正在导入存根库 lib.so 以与 JNI 库链接为:

add_library(lib SHARED IMPORTED) set_target_properties(lib.so PROPERTIES IMPORTED_LOCATION "location_of_lib.so")

add_dependencies(native-jni lib}) target_link_libraries(native-jni lib)

这样 APK 编译成功,但库被捆绑到 APK 中。

我正在使用 AS 4.0.1、NDK r19c、CMake 3.17。同一个项目曾经按预期工作,即没有将库 lib.so 与 APK 捆绑,但不知何故它开始捆绑它。任何调试此问题的线索将不胜感激。

标签: androidc++android-studiocmakeandroid-ndk

解决方案


尝试使用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)

推荐阅读