Error: package com.oculus.vrappframework does not exist

Error: package com.oculus.vrappframework does not exist

我正在按照 Android Studio Basics 中的说明试用 Oculus Mobile SDK V1.0.4。

我为 VrCubeWorld_Framework 导入了 build.gradle 文件,当切换到 Project 视图时,所有依赖项都以粗体显示,包括 VrAppFramework.

当我尝试构建它时,我并没有走得太远。我得到的第一个错误是:

error: package com.oculus.vrappframework does not exist

vrcubeworld\MainActivity.java.

似乎很明显发生了什么,它不知道框架中的 activity,但我如何建立这种联系?我是否需要将其添加为外部库/项目之类的?既然已经加粗了,我还以为会处理好呢。

供参考,这里是 build.gradle:

apply plugin: 'com.android.application'
apply from: "${rootProject.projectDir}/VrApp.gradle"

dependencies {
  compile project(':VrAppFramework:Projects:AndroidPrebuilt')
  compile project(':VrAppSupport:VrGUI:Projects:AndroidPrebuilt')
  compile project(':VrAppSupport:VrLocale:Projects:AndroidPrebuilt')
  compile project(':VrAppSupport:VrSound:Projects:AndroidPrebuilt')
}

android {
  project.archivesBaseName = "vrcubeworldfw"

  defaultConfig {
    applicationId "com.oculus.vrcubeworldfw"
  }

  compileSdkVersion 19
  buildToolsVersion '23.0.1'

  buildTypes {
    debug {
      jniDebuggable true
    }
  }

  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      java.srcDirs = ['../../java']
      jniLibs.srcDir 'libs'
      res.srcDirs = ['../../res']
      assets.srcDirs = ['../../assets']
    }
  }
}

这总结了错误的确切原因 Oculus Forums。然而,经过一些挖掘后,它从任务名称中获取构建类型。

不要打电话:

gradle build

通话:

gradle assembleDebug

为 ANDROID 工作室编辑:

我正在处理一个 non-vanilla oculus vr 项目,所以我的一些更改可能不适用。但是,我发现 android studio 的问题在于它将任务的完整路径传递给 gradle 进行构建。在 build.gradle 文件中,它会检查整个任务名称是否为 "assembleDebug"

build.gradle中的相关来源:

  if ( project.file("build.gradle").exists() ) {
    project.gradle.startParameter.taskNames.each { taskName -> 
        if ( taskName == "assembleDebug" || taskName == "assembleRelease" || taskName == "clean" ) {
          if ( project.hasProperty( "buildType" ) ) {
            //throw new GradleException( "cannot configure multiple build tasks" )
          }
          project.ext.buildType = taskName - "assemble"
       }
    }
  }

更改它以检查任务是否包含发布或调试对我有很大帮助:

  if ( project.file("build.gradle").exists() ) {
    project.gradle.startParameter.taskNames.each { taskName -> 
        if (taskName.contains( "Debug" ) ) {
          project.ext.buildType = "Debug";
        } else if( taskName.contains( "Release" ) ) {
          project.ext.buildType = "Release";
        }    
    }
  }