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?
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. –
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ć –