【问题标题】:How to use experimental gradle plugin to define multiple JNI modules?如何使用实验性 gradle 插件定义多个 JNI 模块?
【发布时间】: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


【解决方案1】:

新的实验性 gradle 还不支持构建独立的原生库模块。

这是b.android.com/177631 上的跟踪器的已知限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多