【问题标题】:Unity3D Gradle version 2.10 is required需要 Unity3D Gradle 版本 2.10
【发布时间】:2018-05-03 16:50:09
【问题描述】:

我正在 OS X 上的 Unity 中为 Android 构建游戏,但出现此错误。

  CommandInvokationFailure: Gradle build failed. 
  /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx2048m" "assembleRelease"
  
  stderr[

  FAILURE: Build failed with an exception.

  * Where:
  Build file '[...]/UnityProject/Temp/gradleOut/build.gradle' line: 19
  
  * What went wrong:
  A problem occurred evaluating root project 'gradleOut'.
  > Failed to apply plugin [id 'com.android.application']
     > Gradle version 2.10 is required. Current version is 4.0.1. If using the gradle wrapper, try editing the distributionUrl in [...]/UnityProject/Temp/gradleOut/gradle/wrapper/gradle-wrapper.properties to gradle-2.10-all.zip
  
  * Try:
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
  
  BUILD FAILED in 1s
  ]
  stdout[
  
  ]
  exit code: 1
  UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
  UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
  UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1 progress, System.String error)
  UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, System.Action`1 progress)
  Rethrow as GradleInvokationException: Gradle build failed
  UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, System.Action`1 progress)
  UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
  UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
  UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Unity 使用 Gradle 版本 2.10,但显然当前版本是 4.0.1(这是否意味着我的 PC 在某处定义了“默认”gradle 版本?)

编辑(5 月 3 日)

我设法导出项目,用 Android Studio 打开它,我可以强制使用 gradle 版本 2.10 和 Android 插件版本 2.1.0 通过这种方式,项目编译完成,我可以在设备上执行它。

有没有办法在 Unity 上做类似的事情?还是系统范围的?

到目前为止我做了什么(没有成功)

  • 按照建议,我查找了文件 gradle-wrapper.properties,但它不存在,而且由于它位于 Temp 文件夹下,因此它不是一个很有前途的路径。
  • 我尝试创建这样的文件并按照说明配置distributionUrl
  • 做了brew install gradle,然后在项目文件夹上我尝试了gradle wrapper --gradle-version 2.10
  • 卸载 Unity,删除 ~/.gradle 文件夹。重新安装 Unity。
  • 尝试使用 SDKMAN! 安装 gradle(这也将 Gradle 2.10 设置为默认值)

我的具体场景

  • 团结 2017.4.2f2
  • macOS Sierra

差不多就这些了,有什么想法吗?

谢谢!

编辑

  • 添加了更多不成功的尝试
  • 添加了完整的错误

【问题讨论】:

  • 感谢@IntelliJAmiya,但不幸的是,我正在使用 Unity,而不是 IntelliJ 或 Android Studio,所以这些答案中的大多数甚至不适用于我的问题
  • 您是否在 Unity 项目中使用任何插件?如果有,你能列出来吗?
  • 嗨@Programmer 不,我没有使用任何插件(还)
  • 好的,几分钟后回来查看我的答案。

标签: android unity3d gradle


【解决方案1】:

错误中最重要的部分是:

如果使用 gradle 包装器,请尝试编辑 distributionUrl [...]/UnityProject/Temp/gradleOut/gradle/wrapper/gradle-wrapper.properties 到 gradle-2.10-all.zip

它希望你使用 gradle-2.10

1。转到<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates,然后将mainTemplate.gradle 文件复制到您的<ProjectName>Assets\Plugins\Android 文件夹。

2。打开您复制到<ProjectName>Assets\Plugins\Android 文件夹的mainTemplate.gradle 文件。

3.在里面找到classpath 'com.android.tools.build:gradle:2.3.0'

gradle:2.3.0 替换为错误要求您将其替换为的版本。

在你的情况下,应该是 gradle:2.1.0 然后保存它。

【讨论】:

  • 同样的错误?您可以添加一个屏幕截图来显示您在项目中放置 mainTemplate 文件的位置吗?
  • 它在UnityProject/Assets/Plugins/Android 下,你可以在这里看到s7.postimg.cc/5uo47nm6j/Screen_Shot.png
  • 您说您没有使用插件,但该文件夹中似乎有插件。有 libs 文件夹和其他文件模糊不清,你也有一个清单文件。那些可以修改你的 gradle 文件。
猜你喜欢
  • 2016-04-21
  • 1970-01-01
  • 2016-12-28
  • 2016-05-11
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 2016-04-08
相关资源
最近更新 更多