2015-07-30 13 views
6

Moja aplikacja ma kilka modułów JNI. Używam Android.mk do definiowania modułów i plików, które mają zostać zbudowane dla każdego modułu. Musiałem więc wyłączyć automatyczne wywołanie ndk-build. Moja Gradle zawiera następujące elementy:Jak używać eksperymentalnej wtyczki gradle do definiowania wielu modułów JNI?

sourceSets.main { 
    jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk file 
    jniLibs.srcDirs = ['src/main/libs'] 
} 

task buildNative(type: Exec, description: 'Compile JNI source via NDK') { 
commandLine "ndk-build.cmd", 
     '-C', file('src/main/jni').absolutePath, 
     '-j', Runtime.runtime.availableProcessors(), 
     'all' 
} 

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

Od teraz Android NDK Studio wsparcie i rodzimy debugowanie, będę musiał użyć nowy eksperymentalny plugin Gradle. Istnieje sekcja, w której muszę podać nazwę modułu.

android.ndk { 
    // All configurations that can be changed in android.ndk. 
    moduleName = "native" 
    toolchain = "clang" 
    toolchainVersion = "3.5" 
    // Note that CFlags has a capital C, which is inconsistent with 
    // the naming convention of other properties. This is a 
    // technical limitation that will be resolved 
    CFlags += "-DCUSTOM_DEFINE" 
    cppFlags += "-DCUSTOM_DEFINE" 
    ldFlags += "-L/custom/lib/path" 
    ldLibs += "log" 
    stl = "stlport_static" 
} 

Jednakże wszystkie przykłady widzę tylko podać jeden moduł i nie ma sposobu, aby określić, które pliki mają zostać zbudowane na tym module.

Czy ktoś ma pojęcie, jak zdefiniować kilka modułów i określić pliki dla każdego modułu w nowej eksperymentalnej wtyczce gradle?

+0

You [*** can ***] (http://stackoverflow.com/a/32640823/192373) zachowaj starannie wykonane skrypty ** Android.mk ** i nadal ciesz się zaletami nowego * eksperymentalnego * wtyczka gradle, w tym natywne debugowanie. –

+0

Utwórz nowy moduł dla każdego modułu i dodaj go jako zależności w bieżącym projekcie. Po prostu publikuję to tutaj, na wypadek, gdyby ktoś inny musiał wiedzieć –

Odpowiedz

0

Nowa gradacja eksperymentalna nie obsługuje jeszcze samodzielnego budowania modułu biblioteki rodzimej.

Jest to znane ograniczenie śledzące na b.android.com/177631.