【问题标题】:How to have a white list of files to be compiled in Gradle NDK build如何在 Gradle NDK 构建中获得要编译的文件的白名单
【发布时间】:2016-04-28 14:51:57
【问题描述】:

我需要将 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.
            }
        }
    }

有人有解决办法吗?

【问题讨论】:

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


    【解决方案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 环境变量。

    【讨论】:

    • 这不是我想要的,但我想虽然插件是实验性的 - 这是一个可以接受的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多