Android Studio 正在将存根库捆绑到 APK 中

Android Studio is bundling stubbed library into the APK

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

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

add_library(导入共享库) set_target_properties(lib.so 属性 IMPORTED_LOCATION "location_of_lib.so")

add_dependencies(native-jni lib}) target_link_libraries(本机 jni 库)

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

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

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

然后找到图书馆和link它:

find_library(lib-a a)
target_link_libraries(native-jni lib-a)