我有一个Android项目,我们已经使用实验性Gradle插件已有一段时间了。随着Android Studio 3的发布以及向Gradle 4的转移,我有几个问题
在刚刚看来,没有人在几个月内添加了新的实验性gradle版本,而最后一个版本11 alpha是3个月前。这还在维持吗?
有没有更好的方法来进行复杂的NDK构建,然后是实验性的Gradle插件?我做了一些研究,看起来有一种方法可以获得一个cMake txt文件并像调用这个Samba客户端一样调用它 https://github.com/google/samba-documents-provider/tree/master/app
当我说复杂的NDK构建时,我有很多C ++库,我会在一起。我有一堆自定义c ++代码,我有几个第三方库,它们有自己的代码和共享库。我有许多jni接口文件来管理它们。
我缩短了这个例子,但我有12个文件。
model {
// this repositories section defines our list of external shared libraries
// included here are all nuance libs and python 3.5
repositories {
libs(PrebuiltLibraries) {
lib1 {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jniLibs/${targetPlatform.getName()}/lib1.so")
}
}
lib2{
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jniLibs/${targetPlatform.getName()}/lib2.so")
}
}
}
}
然后,我有以下NDK部分
// defines the NDK build
ndk {
moduleName "myApp"
toolchain = "clang"
// We set the platform for the NDK. with the a certain device we were getting missing libraries without it
// https://github.com/android-ndk/ndk/issues/126
platformVersion="23"
// If switching to GNU, here are the values to replace with
stl "gnustl_shared"
CFlags.addAll(["-DNDEBUG"])
cppFlags.addAll(["-fexceptions", "-std=gnu++11"])
// when adding system library dependencies, they are added here
ldLibs.addAll(["log","atomic"])
// C include directories
CFlags.addAll(["-I${file("src/main/jni/lib1/inc")}".toString(),
"-I${file("src/main/jni/lib2")}".toString()
])
// C++ include directories
cppFlags.addAll(["-I${file("src/main/jni/lib1/inc")}".toString(),
"-I${file("src/main/jni/lib1")}".toString(),
"-I${file("src/main/jni/lib2")}".toString(),
"-I${file("src/main/jni/lib2/os")}".toString(),
"-I${file("src/main/jni")}".toString()
])
}
`
然后在gradle中我列出了所有的jni源
// this section is to list the NDK static/shared library dependencies
// these dependencies are defined in detail above in the repositories section
sources {
main {
jni {
dependencies {
library "lib1"
library "lib2"
library "lib3"
library "lib4"
library "lib5"
library "lib6"
library "lib7"
library "lib8"
library "lib9"
library "lib10"
library "lib11"
library "lib12"
}
}
}
}
答案 0 :(得分:0)
所以回答上面我自己的问题。
已宣布在0.11.0之后将不再支持实验性gradle插件。所以没有它不再维护。
我的项目已转换为使用CMake。使用最新的gradle 4.1并将所有内容转换为CMake和CMakeLists.txt类型的构建,我们能够在没有实验版gradle的情况下构建项目。