android CMake导入的库未包含在Gradle aar输出中

zpgglvta  于 2023-01-15  发布在  Android
关注(0)|答案(1)|浏览(126)

在加载C库(mylib.so,其中已经包含JNI API)的Android项目中,我有一个导入预构建库的CMakeLists.txt,如文档所示:

cmake_minimum_required(VERSION 3.10.2)
project(ImportMyLib)

set(MYLIB_PREBUILT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/build/arm64/src")

add_library(mylib SHARED IMPORTED)
set_target_properties(mylib
                      PROPERTIES IMPORTED_LOCATION
                      "${MYLIB_PREBUILT_PATH}/libmylib.so")

我确实打印了${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/build/arm64/src,并检查了${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/build/arm64/src/libmylib.so是否存在。
但是,libmylib.so没有包含在生成的.aar中,我不明白为什么。
我的build.gradle确实包含上面的CMakeLists.txt,如下所示:

externalNativeBuild {
    cmake {
        path "src/main/cpp/CMakeLists.txt"
    }
}

这与this question类似,只是似乎需要添加一个IMPORTED目标(因为ExternalProject_Add),而这里我尝试导入一个已经构建的库。
我错过了什么?

yiytaume

yiytaume1#

您可以显式请求包含libmylib.so

externalNativeBuild {
    cmake {
        path "src/main/cpp/CMakeLists.txt"
        targets "mylib" # matches add_library(mylib SHARED IMPORTED)
    }
}

相关问题