首页 > 后端开发 > C++ > 我可以在 NDK DSL 中定义 LOCAL_SRC_FILES 吗?

我可以在 NDK DSL 中定义 LOCAL_SRC_FILES 吗?

DDD
发布: 2024-11-23 09:55:17
原创
340 人浏览过

Can I define LOCAL_SRC_FILES in NDK DSL?

可以在 NDK DSL 中定义 LOCAL_SRC_FILES 吗?

为了在 Gradle ndk{} 块中定义 LOCAL_SRC_FILES,需要注意的是,此功能不支持当前的 Gradle 插件。即使是“实验性”插件也只允许添加目录。

推荐方法

建议使用传统的 Android.mk 来可靠地完成此任务。此外,建议将 jni.srcDirs 保留为 [${jniSrc}],以便 Android Studio 显示这些文件,以便于访问和语法突出显示。

NDK 构建禁用

如果传统 Android.不需要 mk 方法,可以禁用常规 NDK 构建任务,并可以注入 buildNative 任​​务相反:

def ndkBuild = android.ndkDirectory
import org.apache.tools.ant.taskdefs.condition.Os
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    ndkBuild += '.cmd'
}

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine '$ndkBuild', 'NDK_PROJECT_PATH="$jniSrc/..'
}

task cleanNative(type: Exec, description: 'Clean JNI object files') {
    commandLine '$ndkBuild', 'clean', 'NDK_PROJECT_PATH="$jniSrc/..'
}

clean.dependsOn 'cleanNative'

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

tasks.all {
    task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false
}
登录后复制

Gradle Experimental Plugin

对于 'com.android.tools.build:gradle-experimental:0.2.0' 插件,可以采取类似的方法,但是使用不同的任务匹配:

tasks.all {
    task ->
        if (task.name.startsWith('compile') && task.name.contains('MainC')) {
            task.enabled = false
        }
        if (task.name.startsWith('link')) {
            task.enabled = false
        }
        if (task.name.endsWith("SharedLibrary") ) {
            task.dependsOn buildNative
        }
}
登录后复制

从 NDK 中排除文件构建

使用实验性插件 0.4.0,可以通过模式从 NDK 构建中排除文件:

android.sources {
    main {
       jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}
登录后复制

以上是我可以在 NDK DSL 中定义 LOCAL_SRC_FILES 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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