首页 >后端开发 >C++ >您可以在 gradle.build ndk {} DSL 中定义 LOCAL_SRC_FILES 吗?

您可以在 gradle.build ndk {} DSL 中定义 LOCAL_SRC_FILES 吗?

Linda Hamilton
Linda Hamilton原创
2024-11-29 00:54:11539浏览

Can You Define LOCAL_SRC_FILES in the gradle.build ndk {} DSL?

NDK中的define LOCAL_SRC_FILES

问题:

是否可以在gradle.build ndk {} DSL中定义LOCAL_SRC_FILES?

背景:

在jni module gradle.build文件中,使用以下配置:

android {
    def jniSrc = System.getProperty("user.home") + "/srcs/jni"

    defaultConfig {
        ndk {
            moduleName "core"
            stl "gnustl_shared"
            cFlags "-std=c++11"
        }
    }

    ...

jni源代码中包含针对不同平台(Android、iOS、WinRT)的代码。目标是排除Android.mk中不适用于Android的代码。

答案:

不幸的是,当前的gradle插件不支持在ndk {} DSL中定义LOCAL_SRC_FILES。以下是解决方法:

传统方法:

保持传统的Android.mk文件,它可以可靠地排除特定代码。建议使用cppFlags和cFlags设置,以便在Android Studio中具有代码引用和语法高亮。

实验性方法(buildNative任务):

禁用常规NDK构建任务,并注入一个buildNative任务以构建本地代码。这适用于实验性插件'com.android.tools.build:gradle-experimental:0.2.0'。

高级方法(静态库):

如果本地代码分为多个目录(Android特定文件和平台无关文件),则可以考虑构建一个静态库,并链接它以获取必要的符号。这种方法允许使用ndk-build构建静态库,并在链接时将其与必要的对象一起使用。

更新:

在实验性插件中,可以使用compileJavaTask.dependsOn buildNative来替换task compileTask.dependsOn buildNative。

更新 2:

可以链接单个本地源文件到Android Studio项目,从而解决该问题。

以上是您可以在 gradle.build ndk {} DSL 中定义 LOCAL_SRC_FILES 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn