如何在Gradle NDK build

时间:2016-04-28 14:51:58

标签: android android-studio android-ndk java-native-interface android-gradle

我需要将Android应用程序从Ant转换为Gradle。这个应用程序使用跨平台C ++库。使用Ant,我们使用make(.mk)文件来决定编译哪些文件来创建JNI库。我正在尝试使用新的实验性Gradle版本(gradle-experimental:0.7.0-rc1)来做一些与Ant正在做的事情相似的事情,并列出我编译的文件。

问题在于,根据documentation,无法完成此操作。

    sources.main {
        jni {
            source {
                include "someFile.cpp"  // This is ignored.
            }
        }
    }

有没有人有解决方法呢?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种相对简单的方法是继续使用现有的.mk makefile并从Gradle调用ndk-build,如下所示:

// Call external ndk-build(.cmd) script to build the native code
task ndkBuild(type: Exec) {
    def ndkBuildExt = Os.isFamily(Os.FAMILY_WINDOWS) ? ".cmd" : ""
    commandLine "ndk-build${ndkBuildExt}", '-C', file('.').absolutePath,
            '-j', Runtime.runtime.availableProcessors()
}

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

此方法要求在Android Studio的“项目结构”对话框(文件 - >项目结构)中设置NDK安装的路径,或者在命令行上设置ANDROID_NDK_HOME环境变量。