【发布时间】:2015-10-22 07:40:02
【问题描述】:
我的应用有几个 JNI 模块。我使用 Android.mk 来定义模块以及为每个模块构建的文件。所以我不得不禁用自动 ndk-build 调用。我的 gradle 包含以下内容:
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
}
由于现在 Android Studio 支持 NDK 和原生调试,我需要使用新的实验性 gradle 插件。有一个部分我需要指定模块名称。
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"
}
但是,我看到的所有示例都只指定了一个模块,无法指定要针对该模块构建哪个文件。
有人知道如何在这个新的实验性 gradle 插件中定义多个模块并为每个模块指定文件吗?
【问题讨论】:
-
您 can 保留您精心制作的 Android.mk 脚本,并且仍然享受新的 experimental gradle 插件的优势,包括本机调试。
-
为每个模块创建一个新模块,并将它们作为依赖项添加到当前项目中。我只是在这里发布,以防其他人需要知道
标签: android-studio gradle android-ndk