2017-07-06 5 views
1

Ich habe ein Android-Projekt und wir haben das experimentelle Gradle-Plugin für einige Zeit verwendet. mit Android Studio 3 und der Umzug in Gradle 4 angekündigt, habe ich ein paarAndroid Experimental Gradle Plugin & Android Studio 3

Fragen
  1. In gerade auf der Suche niemand ein neues experimentelles gradle Release in ein paar Monate hinzugefügt, und die letzte Version 11 alpha ist vor 3 Monaten. Wird das noch aufrechterhalten?

  2. Gibt es eine bessere Möglichkeit, komplizierte NDK-Builds als das experimentelle Gradle-Plugin zu erstellen? Ich habe ein wenig Forschung und es sieht aus wie es eine Möglichkeit, eine cAchten TXT-Datei zu haben ist, und zu rufen, dass, wie sie mit diesem Samba-Client https://github.com/google/samba-documents-provider/tree/master/app

tat

Wenn ich sage kompliziert NDK bauen, ich habe eine Reihe von C++ Bibliotheken, die ich zusammen ziehe. Ich habe eine Reihe von benutzerdefinierten C++ - Code, ich habe ein paar Bibliotheken von Drittanbietern, die ihren eigenen Code sowie gemeinsame Bibliotheken haben. Und ich habe eine Reihe von jni Interface-Dateien, um alles zu verwalten.

Ich habe dieses Beispiel gekürzt, aber ich habe 12 so Dateien.

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") 
      } 
     } 
    } 
} 

ich dann den folgenden für einen NDK Abschnitt

// 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() 
      ]) 
     } 

`

dann auch in der gradle ich alle meine jni Quellen

Liste haben
// 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" 
       } 
      } 
    } 
} 

Antwort

0

Also meine Antwort eigene Fragen oben.

  1. Es wurde angekündigt, dass das experimentelle Gradle-Plugin nach 0.11.0 nicht mehr unterstützt wird. Also nein, es wird nicht mehr gepflegt.

  2. Mein Projekt wurde konvertiert, um CMake zu verwenden. Mit der neuesten Version 4.1 und dem Konvertieren von allem in CMake und den Buildtyp CMakeLists.txt konnten wir das Projekt ohne die experimentelle Version von Gradle erstellen.

Verwandte Themen