2015-07-30 15 views
6

La mia app ha diversi moduli JNI. Uso Android.mk per definire i moduli e quali file creare per ciascun modulo. Quindi ho dovuto disabilitare la chiamata automatica ndk-build. Il mio Gradle contiene quanto segue:Come utilizzare il plug-in sperimentale gradle per definire più moduli 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 
} 

Da ora Studio Android NDK il supporto e il debug nativo, avrei bisogno di utilizzare nuovo plugin Gradle sperimentale. C'è una sezione che ho bisogno di specificare il nome del modulo.

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

Tuttavia, tutti gli esempi che vedo solo specificano un modulo e non c'è modo di specificare quale file da costruire contro quel modulo.

Qualcuno ha qualche idea su come definire diversi moduli e specificare i file per ogni modulo in questo nuovo plugin gradle sperimentale?

+0

Tu [*** can ***] (http://stackoverflow.com/a/32640823/192373) mantieni i tuoi script ** Android.mk ** con cura e goditi ancora i vantaggi del nuovo * experimental * plugin gradle, incluso il debug nativo. –

+0

Creare un nuovo modulo per ogni modulo e aggiungerli come dipendenze nel progetto corrente. Sto solo postando questo qui nel caso in cui qualcun altro abbia bisogno di sapere –

risposta

0

Il nuovo gradle sperimentale non supporta ancora la creazione di un modulo di libreria nativa autonomo.

Questa è una limitazione nota è il tracker su b.android.com/177631.

Problemi correlati