我有一个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)