2017-07-06 90 views
1

我有一个Android项目,我们一直在使用实验Gradle插件一段时间。与Android工作室3被公布,并迁移到摇篮4,我有几个问题Android实验gradle插件&Android Studio 3

  1. 在刚刚看没人加在几个月的新的实验gradle这个版本,最后的版本11个字母是3个月前。这是否仍然维持?

  2. 有没有更好的方法来做复杂的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

因此,要回答以下然后我以上自己的问题。

  1. 现在已经宣布实验gradle插件在0.11.0之后不再被支持。所以没有它不再被维护。

  2. 我的项目被转换为使用CMake。使用最新的gradle 4.1并将所有内容转换为CMake和CMakeLists.txt类型的构建,我们能够在没有实验版本的Gradle的情况下构建项目。