【问题标题】:Oculus Mobile SDK sample project error when I try to build :compileReleaseNdk:当我尝试构建时 Oculus Mobile SDK 示例项目错​​误:compileReleaseNdk:
【发布时间】:2016-08-10 13:57:29
【问题描述】:

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


错误:失败:构建失败并出现异常。

  • 在哪里: 构建文件 '~/oculus_sdk/ovr_sdk_mobile_1.0.0.1/VrSamples/Native/CinemaSDK/Projects/Android/build.gradle' 行:28

  • 出了什么问题: 配置项目 ':VrSamples:Native:CinemaSDK:Projects:Android' 时出现问题。

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

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


有人可以解决这个问题吗?

我的开发环境如下。

  • Android 工作室 2.2
  • Android NDK:android-ndk-r12b
  • Oculus 移动 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)
            }
    }
}

【问题讨论】:

标签: android android-studio android-ndk oculus gear-vr


【解决方案1】:

我已经在类似问题上找到了一个不错的答案: execution failed for task ':app:compileDebugNdk' failed to run this command ndk-build.cmd

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

表示gradle android插件正在尝试调用ndk-build 自己编译你的源代码。你应该得到比 日志窗口中的错误代码。

无论如何,目前它使用自动生成的 Makefile 和 忽略你的,这是行不通的,因为你需要集成ffmpeg。

要克服这个问题,您应该禁用插件的自动 ndk 集成并使其使用标准 libs 位置来获取您的 .so 文件:

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
}

有关这一切的原因的更多信息,您可以查看gist 和 我的blog post

您需要做的就是通过在 build.gradle 文件中添加以下属性来禁用 ndk-build

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

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2021-09-15
    相关资源
    最近更新 更多