2016-04-28 3 views
0

Ich muss eine Android-App von Ant zu Gradle umwandeln. Diese App verwendet eine plattformübergreifende C++ - Bibliothek. Mit Ant verwenden wir make (.mk) -Dateien, um zu entscheiden, welche Dateien kompiliert werden, um die JNI-Bibliothek zu erstellen. Ich versuche, die neue experimentelle Gradle-Version (gradle-experimental: 0.7.0-rc1) zu verwenden, um etwas zu tun, was Ant tut, und listet die Dateien auf, die ich kompiliere. Das Problem ist, dass dies laut documentation nicht möglich ist.Wie eine weiße Liste von Dateien in Gradle NDK kompiliert werden muss

sources.main { 
     jni { 
      source { 
       include "someFile.cpp" // This is ignored. 
      } 
     } 
    } 

Hat jemand einen Workaround dafür?

Antwort

1

Eine relativ einfache Möglichkeit, dies zu tun, ist Ihren bestehenden .mk Makefiles fortzusetzen und rufen von Gradle wie diese NDK-build:

// Call external ndk-build(.cmd) script to build the native code 
task ndkBuild(type: Exec) { 
    def ndkBuildExt = Os.isFamily(Os.FAMILY_WINDOWS) ? ".cmd" : "" 
    commandLine "ndk-build${ndkBuildExt}", '-C', file('.').absolutePath, 
      '-j', Runtime.runtime.availableProcessors() 
} 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn ndkBuild 
} 

Dieser Ansatz den Pfad zu Ihrer NDK Installation erfordert eingestellt werden im Android Studio-Dialogfeld "Projektstruktur" (Datei-> Projektstruktur) oder durch Festlegen der Umgebungsvariablen ANDROID_NDK_HOME in der Befehlszeile.

+0

Dies ist nicht genau das, was ich gesucht habe, aber ich denke, dass während das Plugin experimentell ist - es ist eine akzeptable Lösung. –

Verwandte Themen