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

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

Linda Hamilton
发布: 2024-11-29 00:54:11
原创
541 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板