当我尝试构建:compileReleaseNdk时,Oculus Mobile SDK示例项目错误



当我尝试构建oculus mobile sdk的示例项目时,我遇到了以下一些错误。


Error:FAILURE: Build failed with an exception.

  • 地点:构建文件"~/oculus_sdk/ovr_sdk_mobile_1.0.0.1/VrSamples/Native/CinemaSDK/Projects/Android/Build"。gradle' line: 28

  • 哪里出错了:配置项目':VrSamples:Native:CinemaSDK:Projects:Android'时出现问题。

    无法获取项目':VrSamples:Native:CinemaSDK:Projects:Android'的未知属性'compileReleaseNdk',类型为org.gradle.api.Project.

  • 试题:使用——stacktrace选项运行以获取堆栈跟踪。使用——info或——debug选项运行以获得更多的日志输出。


有人能解决这个问题吗?

我的开发环境如下。

  • Android studio 2.2
  • Android NDK: Android - NDK -r12bOculus Mobile SDK: 1.0.0.1
  • OSX 10.11.6

在Debug消息中提到的gradle文件内容是这样的…

apply plugin: 'com.android.application'
dependencies {
    compile name: 'VrAppFramework', ext: 'aar'
    compile project(':VrAppSupport:SystemUtils:Projects:AndroidPrebuilt')
    compile project(':VrAppSupport:VrGUI:Projects:AndroidPrebuilt')
    compile project(':VrAppSupport:VrLocale:Projects:AndroidPrebuilt')
    compile project(':VrAppSupport:VrSound:Projects:AndroidPrebuilt')
}
android {
    compileSdkVersion 19
    buildToolsVersion '24.0.1'
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            jniLibs.srcDir 'libs'
            res.srcDirs = ['res']
            assets.srcDirs = ['../../assets']
        }
    }
}
project.afterEvaluate {
  compileDebugNdk.dependsOn   'NDKBuildDebug'
  compileReleaseNdk.dependsOn 'NDKBuildRelease'
  clean.dependsOn             'NDKBuildClean'
}
android.applicationVariants.all { variant ->
      variant.outputs.each { output ->
            def alignedOutputFile = output.outputFile
            def unalignedOutputFile = output.packageApplication.outputFile
            def buildTypeName = variant.buildType.name
            def finalFileName = rootProject.name + "-" + buildTypeName + ".apk"
            def unAlignedFileName = rootProject.name + "-" + buildTypeName + "-unsigned" + ".apk"
            output.packageApplication.outputFile = 
                    new File(unalignedOutputFile.parent, unAlignedFileName)
            if (output.zipAlign) {
                output.outputFile = 
                    new File(alignedOutputFile.parent, finalFileName)
            }
    }
}

我已经在类似的问题上找到了一个很好的答案:执行任务失败':app:compileDebugNdk'运行命令失败ndk-build.cmd

Error:Execution failed for task ':app:compileDebugNdk'.

表示gradle android插件正在尝试调用ndk-build本身来编译你的源代码。你应该得到更多的细节日志窗口中的错误代码。

无论如何,目前它使用自动生成的Makefile和忽略您的文件,因为您需要集成ffmpeg,因此无法工作。

为了克服这个问题,你应该禁用插件的自动ndk集成并使它使用标准的位置来获取您的所以文件:
sourceSets.main {
    jniLibs.srcDir 'src/main/libs'
    jni.srcDirs = [] //disable automatic ndk-build call
}
从这里你可以自己调用ndk-build,或者让gradle调用它给你:
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
    }
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
}

有关这一切的更多信息,您可以查看此要点和我的博客。

你所需要做的就是通过在构建中添加以下属性来禁用ndk-build。gradle文件。

sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = [] //disable automatic ndk-build call
    }

或删除第二行:jni.srcDirs = [...]

希望对大家有所帮助

相关内容

  • 没有找到相关文章

最新更新