繁体   English   中英

Unity 不再能够构建项目

[英]Unity no longer able to build project

在过去 6 天左右的时间里,我一直在用头撞墙,试图让 Unity 构建我的 Android 游戏。

几个月前,我的游戏曾经按预期构建,我想出了一些新东西并添加了这些东西(游戏在 Unity 中运行良好,游戏模式没有错误)。

然而,尝试将 C++ 编译器设置为“master”来构建我的游戏,总是失败,但有以下例外:

1.

Building Library\Bee\artifacts\Android\fy9m9\libil2cpp.so failed with output:
C:/Program Files/Unity/Hub/Editor/2021.3.14f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld.gold.exe: internal error in arm_branch_common, at /buildbot/src/android/binutils/toolchain/binutils/binutils-2.27/gold/arm.cc:4063
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

BuildFailedException: Incremental Player build failed!
UnityEditor.Modules.BeeBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at <6a5b55f2e18b419e9faedac06ac6af94>:0)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <6a5b55f2e18b419e9faedac06ac6af94>:0)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <b5a1f7b6d39d4ca78ca284153b2ea92d>:0)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.Int32 subtarget, 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 <6a5b55f2e18b419e9faedac06ac6af94>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)
Build completed with a result of 'Failed' in 668 seconds (667590 ms)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

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

到目前为止我尝试过的事情:

  • 将 C++ 编译器配置设置为“发布”的构建也可以编译
  • 如果我将平台切换到 Windows,我可以构建项目
  • 如果我将编译器设置为“调试”而不是“主”,项目似乎可以构建,这并不能解决问题,但可能是实际问题的线索(?)
  • 确保它不是由我添加的内容引起的:我加载了我的游戏的备份(1.0 版,运行良好并且也已发布),但也无法再构建备份。
  • 确保问题不在于 Unity 本身,我尝试构建一个干净的项目。 这按预期工作。
  • 我更新了项目中的所有包
  • 我将项目使用的 Unity 版本更新为 2021.3.14f1(我也将其用于另一个可以使用该版本构建的 Android 项目)。
  • 更新了适用于 Unity 插件的 Google Play 游戏 (https://github.com/playgameservices/play-games-plugin-for-unity ) 以及所需的随附代码更改
  • 根据 Reddit 上的回复,我确保没有脚本使用 UnityEditor 命名空间(少数使用的是 #IF UNITY_EDITOR 命令

感谢用户 jdweng 我设法通过从不同的角度看问题来找到问题。 这让我在 Unity 论坛上发了一篇帖子,有人遇到了我描述的完全相同的问题: https ://forum.unity.com/threads/fails-to-compile-on-android-arm-32.1135633/

那里的一位用户提到了一个解决方案(归功于 pradotech),最终为我解决了这个问题:

在将 Stripping Level 更改为 Medium(我使用的是 Low)并从 .NET Framework 切换到 .NET Standard 2.1 之后,我可以使用 Master 编译器为 Android 构建。 详情如下:

  • 统一 2021.3.9f1
  • 更快的运行时间
  • 压缩:LZ4HC API
  • 兼容性:.NET 标准 2.1
  • 编译器配置:Master
  • 所有架构(ARMv7、ARM64、x86 和 x86-64)
  • 管理剥离级别:中/高
  • 我还从项目中删除了一些未使用的脚本。

构建完成,没有任何错误。

希望它继续工作,也许对某人有帮助。

我的项目使用的是Unity 2021.3.14f1,我已经在.Net Standard 2.1上了。 我将剥离更改为 Medium,删除了一堆已弃用的脚本,现在它又可以工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM