Android Studio NDK构建问题:Error:Execution failed for task ':app:buildNative'。

3

输入图像描述

你好。我在使用Android Studio NDK构建时遇到了麻烦。我没有使用本地库,只是使用Java类来使用库和JNI C或头文件。 所以我困惑如何为我的项目(saskin库;我正在学习它)编写Gradle文件。 请帮帮我吧!

错误信息

错误:对任务“:app:buildNative”执行操作失败。 启动进程“命令'C:\ NDK / ndk-build'”时发生问题

build.gradle

apply plugin: 'com.android.application'
android {
    compileSdkVersion 8
    buildToolsVersion "21.1.1"

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    sourceSets {
        main  {
            jni.srcDirs = []
            //jniLibs.srcDir 'src/main/libs'
        }
    }

    defaultConfig {
        applicationId "com.sasken.player"
        minSdkVersion 8
        targetSdkVersion 8

        ndk {
            moduleName "equalizer"
        }
    }

    // call regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
    }

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

dependencies {
}
1个回答

20

由于你正在使用Windows系统,应该在 ndkBuild 任务中调用 ndk-build.cmd 而不是 ndk-build

为了让你的Gradle文件在Windows和Unix兼容的系统上工作,你可以按照以下方式修改你的任务:

import org.apache.tools.ant.taskdefs.condition.Os

    // call regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
        } else {
            commandLine 'ndk-build', '-C', file('src/main').absolutePath
        }
    }

另外,由于您正在直接使用ndk-build,因此ndk将在libs文件夹内生成您的库,因此您应该取消注释gradle文件中的jniLibs.srcDir 'src/main/libs',以便考虑生成的库。


在Android Studio中,保持.cpp文件可见是很好的,只需禁用compileNormalDebugNdkcompileNormaReleaseNdk任务即可:https://dev59.com/p10b5IYBdhLWcg3wGN7f#40574473 - Alex Cohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接