如何在Unity上修复“Gradle Build Failed”错误?

8

我一直在尝试构建我的Android应用程序,但似乎找不到解决此问题的任何方法:图像

Unity版本:Unity 2020.3.21f1(64位) JDK、SDK、NDK和Gradle使用的是Unity推荐的版本(已尝试使用其他版本)。

控制台详细信息如下:

Configure project :launcher
WARNING: The option setting 'android.enableR8=false' is deprecated.
It will be removed in version 5.0 of the Android Gradle plugin.
You will no longer be able to disable R8

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)`

    FAILURE: Build failed with an exception.

    * What went wrong:
    com/sun/istack/FinalArrayList
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    CommandInvokationFailure: Gradle build failed. 
    C:\Program Files\Unity\Hub\Editor\2020.3.21f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2020.3.21f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-6.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"
    
    stderr[
    
    FAILURE: Build failed with an exception.

    Build completed with a result of 'Failed' in 60 seconds (59527 ms)
    UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

UnityEditor.BuildPlayerWindow+BuildMethodException: 4 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002ca] in <208f92fc783546f9abbe643bfc23920c>:0 
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <208f92fc783546f9abbe643bfc23920c>:0 
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

我已经尝试了YouTube和其他论坛上的所有教程,但是每一份帮助都是受欢迎的。谢谢!

编辑1:

在尝试了Jaimin的解决方案后,现在发生了以下情况:

Assets/Plugins/Android\gradleTemplate.properties file is using a deprecated way of controlling which tool should be used to do the minification. To fix this, remove "useProguard" entries yourself. If not fixed, your build can fail.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)


 File C:\Users\Windows\.android\repositories.cfg could not be loaded.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

FAILURE: Build failed with an exception.

* What went wrong:
com/sun/istack/FinalArrayList
> com.sun.istack.FinalArrayList

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

CommandInvokationFailure: Gradle build failed. 
C:\Program Files\Unity\Hub\Editor\2020.3.21f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2020.3.21f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-6.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
com/sun/istack/FinalArrayList
> com.sun.istack.FinalArrayList

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
]
stdout[
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1[T] progress, System.String error) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <f94168442e634613b6a5965ed17c38f4>:0)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <f94168442e634613b6a5965ed17c38f4>:0)
Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message, System.Exception ex) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (UnityEditor.BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <f94168442e634613b6a5965ed17c38f4>:0)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <208f92fc783546f9abbe643bfc23920c>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Build completed with a result of 'Failed' in 127 seconds (127448 ms)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

UnityEditor.BuildPlayerWindow+BuildMethodException: 5 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002ca] in <208f92fc783546f9abbe643bfc23920c>:0 
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <208f92fc783546f9abbe643bfc23920c>:0 
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

以下是自定义Gradle属性模板文件的编码方式:

org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
unityStreamingAssets=.unity3d**STREAMING_ASSETS**
**ADDITIONAL_PROPERTIES**
8个回答

11
这是因为android.enableR8已经被弃用。要从你的gradle.properties文件中删除它,你需要进入项目设置 > 播放器 > 安卓(选项卡) > 发布设置 > 自定义Gradle属性模板勾选此选项。
之后,在以下位置生成了一个gradleTemplate.properties文件:
Assets/Plugins/Android/gradleTemplate.properties

在这个文件中,删除行android.enableR8,或将其注释掉,然后进行新的构建。
这个技巧应该有效。
另外,可以将其导出为Android项目,然后在Android Studio中进行更多的控制。在Android Studio中,您对这些事情有更多的控制权。

你好,感谢回复。我尝试了一下,现在出现了一些新错误,我已经将它们添加到上面的问题文本中。 - Henrique V. Schroeder
尝试将 Android 项目导出,然后在 Android Studio 中进行编辑。 - Jaimin
谢谢你给我提示,但它对我没用。但是我删除了\Assets\Plugins\Android文件夹中的所有文件,甚至删除了所有以“gradleTemplate.properties”为前缀的文件,然后从原始或旧备份文件夹中复制文件。这对我有用! - Hassan Saeed
4
现在需要进入“项目设置”>“玩家”>“Android”(选项卡)>“发布设置”>“自定义Gradle属性模板”。 - Rubio Jesús
嗨,我正在按照你说的做,但是在移除android.enableR8后,它又自动添加到文件中了。 - undefined

1
我通过迁移到Unity 2022.2简单地解决了这个问题。

1

我在很多地方都看到了这个问题,它真的很痛苦。在我的情况下,我的问题是我的一个旧的CSharp接口不正确,没有出现在我的csproj中,所以我在Visual Studio中看不到它。

由于Unity不关心csproj,在编译时使用它。我之所以注意到这一点,是因为控制台窗口显示了一个不存在的java问题(由于Android,CSharp被转换为Java,因此Graddle抛出了这个问题)。

尝试在您的CSharp程序中查找一些在Visual Studio的Solution Explorer中没有出现的类,并将其删除或修复。

此外,我按照Jaimin上面提到的修复方法进行了操作。对我来说没有用,但我还是保留了它。这样做更有意义。


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Stuart.Sklinar

0
我在“Player Settings -> Player -> Other settings”中将我的目标(Android)API级别升级到34。这样安装了一个新版本的Android SDK API,并且一切都正常工作。我发现这个方法是通过点击每个可能的API版本,直到找到一个可用的。

0

我通过在“播放器设置”下的“发布设置”中检查密钥库密码来解决了同样的问题。

播放器设置 > 发布设置 > 项目密钥库/密钥密码检查


0

安装新版本的Unity,它会正常工作。

您可以使用Unity 2020.3.33f1版本,这是我使用的版本,它可以正常工作。

记得设置偏好设置:Unity默认JDK、Gradle、NDK。


他们需要安装特定的Unity最低版本吗?如果没有,那么这似乎不是一个非常有用的答案。尤其是当社区已经验证了另一个提供具体指导的答案时。 - Jeremy Caney
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

尝试这个方法 对于Windows系统 前往以下位置

"C:\Program Files\Unity\Hub\Editor\2021.1.24f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\31.0.0"

找到一个名为d8.bat的文件。这是一个Windows批处理文件。

将d8.bat重命名为dx.bat。

在lib文件夹中("C:\ProgramFiles\Unity\Hub\Editor\2021.1.24f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\31.0.0\lib")

将d8.jar重命名为dx.jar 请记住,AppData是一个隐藏的文件夹。打开隐藏项目以查看AppData文件夹。

现在运行您的项目...

来自ELNexs https://forum.unity.com/threads/gradle-error-problem-with-gradle-build.538320/


0

尝试让它生成一个新的密钥库。

  • 关闭Unity
  • 浏览到C:\ Users \用户名\.android
  • 移动或删除debug.keystore / lock
  • 构建应该成功

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