我正在尝试使用 android gradle 实验插件 0.7.0-alpha5 构建一个应用程序。
我有一个依赖于本机库“nativeLibrary”的应用程序“mainProject”,它本身依赖于其他几个库(预编译与否)
当我构建我的 nativeLibrary 项目时,一切都可以很好地编译和链接。图书馆按照我在
dependencies
{
lib1
lib2
lib3
}
堵塞。
当我尝试构建我的 mainProject 时,该项目无法链接,因为将库传递给 g++ 编译器的顺序是错误的(以随机顺序),这里是主项目的 options.txt 的摘录:
-shared
-Wl,-soname,mainProject.so
-o
// bunch oh .o files
lib2 // random order
lib3
lib1
-Wl,--no-undefined
-Wl,-z,noexecstack
-Wl,-z,relro
-Wl,-z,now
--sysroot=somePath
-Wl,--build-id
-LPathToC++Compiler
-lc++_static
-no-canonical-prefixes
-L/somePth
-latomic
-llog
-landroid
-lEGL
-lGLESv2
-lz
为了让它链接,我必须手动添加标签
-Wl,--start-group
lib2
lib3
lib1
-Wl,--end-group
是否有使用 gradle 实验插件的自动方式来指定库链接的顺序?或者我是否必须在尝试链接之前创建一个任务来编辑 options.txt 文件?
谢谢!!
编辑:
我在 gradle 论坛上找到了一些有用的东西,但它似乎不适用于 gradle-experimental: