在gradle中构建本地共享库作为依赖项

Building a native shared library as dependency in gradle


我有一个Android Studio项目,它依赖于本地共享库.我已经创建了一个cmake文件来编译库,并且在android项目 (在 src/main/jniLibs/armeabi 中添加了指向共享库的软链接.这样,当构建android项目时,共享库就包含在包中.

以下是 build.gradle 的相关部分:

android {
    ...
    externalNativeBuild {
        cmake {
            path "../cpp/CMakeLists.txt"
        }
    }
}

问题是gradle尝试在调用构建共享库的指令之前打开共享库.

Information:Gradle tasks [:app:assembleDebug]
Error:Could not list contents of 'app/src/main/jniLibs/armeabi/libfoo.so'. Couldn't follow symbolic link.

如何从项目内部调用cmec并同时将库包含在项目中?

--

编辑

在ccale中,共享库使用 ExternalProject_Add 构建.不幸的是,gradle没有看到该目标,也没有看到导入的共享库作为目标.所以这不起作用:

add_library(libfoo SHARED IMPORTED GLOBAL)
add_dependencies(libfoo libactual)

我试图用gradle配置调用构建特定目标:

defaultConfig {
    ...
    externalNativeBuild {
        cmake {
            targets "libfoo"
        }
    }
}

但是gradle仍然看不到它,并且失败了:

Unexpected native build target libfoo. Valid values are:

有效值基本上是一个空列表.

目前,我通过根据库创建虚构的可执行文件来解决此问题.

add_executable(libfoo a.c)
add_dependencies(libfoo libactual)

.htaccess .net .net-core 2d 3d 3d-printing abp abstract-syntax-tree actions-on-google actionscript-3 active-directory activemq activemq-artemis acumatica adobe-xd aframe ag-grid agora.io air airflow ajax akka alert alexa algorithm alignment allure amadeus amazon-cloudformation amazon-cognito