Unity 使用 IL2CPP 发布项目

这篇具有很好参考价值的文章主要介绍了Unity 使用 IL2CPP 发布项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么用 IL2CPP

Unity的IL2CPP(Intermediate Language to C++)是一个编译技术,它将C#代码转换为C++代码,然后再编译成平台相关的二进制代码。IL2CPP提供了几个优点,特别是在性能和跨平台部署方面。以下是IL2CPP的一些主要优点:

1.性能提升:IL2CPP通常能提供比传统的Mono运行时更好的性能,因为它可以利用本地编译器的优化。

2.跨平台支持:由于IL2CPP生成的是C++代码,这使得它更容易被跨平台的编译器支持,因此你可以将游戏编译到多个平台,包括iOS、Android、Windows、Mac、Linux和游戏主机。

3.安全性增强:IL2CPP提供了比Mono更高级别的安全性,因为它不需要运行一个易于逆向工程的中间语言虚拟机。C++代码更难被反编译,这使得逆向工程变得更加困难。

4.完全AOT编译(Ahead-of-Time):IL2CPP完全支持AOT编译,这意味着所有的代码都在部署之前编译好了,有利于实现更快的启动时间和更稳定的运行时性能,这在iOS等不允许JIT编译的平台上尤其重要。

5.内存管理改进:IL2CPP使用了更现代的垃圾回收技术,可以更高效地管理内存,减少内存泄露和碎片化问题。

6.64位支持:IL2CPP支持64位计算,这是许多现代设备和操作系统的要求。

7.与现代C++编译器的兼容性:由于生成的是C++代码,IL2CPP可以利用现代C++编译器(如Clang和GCC)进行进一步的优化。

8.可预测的性能:由于所有的代码都在编译时就已经确定了,运行时的性能比JIT(Just-In-Time)编译更加可预测,因为它不会在用户使用应用程序时进行编译。

9.通用基础设施:IL2CPP为Unity带来了一个通用的代码基础设施,用于支持不断增长的平台数量,简化了Unity的维护和新平台支持的工作。

10.现代语言特性支持:IL2CPP更好地支持C#的新特性,因为它能够使用新的C#编译器,而旧的Mono运行时可能不支持这些新特性。

尽管IL2CPP提供了许多优点,但它也有其限制,比如编译时间往往比Mono更长,且生成的二进制文件大小可能会更大。然而,对于寻求性能和兼容性的开发者来说,IL2CPP提供了一个强有力的解决方案。

二、环境搭建

在安装 Unity 的时候,记得将 Windows Build Support(IL2CPP) 勾上,如果是发布 Linux 系统,则用 Linux Build Support(IL2CPP)

unity il2cpp,Unity,unity

如果没有安装 IL2CPP,在发布界面这里会提示没有安装 IL2CPP,如下:

Currently selected scripting backend (IL2CPP) is not installed

另外还需要安装 C++ 开发环境,否则不能发布项目,错误如下:

unity il2cpp,Unity,unity

详细错误:

Internal build system error. BuildProgram exited with code 1.
error: Could not set up a toolchain for Architecture x64. Make sure you have the right build tools installed for il2cpp builds. Details:
IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Windows Desktop, you must have one of these installed:
 * Visual Studio 2022 or newer with C++ compilers and Windows 10 (or newer) SDK (recommended)
 * Visual Studio 2019 with C++ compilers and Windows 10 (or newer) SDK
 * Visual Studio 2017 with C++ compilers and Windows 10 (or newer) SDK
 * Visual Studio 2015 with C++ compilers and Windows 10 (or newer) SDK

Visual Studio 2017 (or newer) is detected using `vswhere.exe` as well as VSCOMNTOOLS environment variables.
Visual Studio 2015 is detected by looking at "SOFTWARE\Microsoft\VisualStudio\14.0_Config\InstallDir" in the registry as well as VSCOMNTOOLS environment variables.
Windows 10 (or newer) SDK is detected by looking at "SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0\InstallationFolder" in the registry.

Unable to detect any compatible Visual Studio installation!
 * Found Visual Studio 2022 installation without C++ tool components


Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Windows Desktop, you must have one of these installed:
 * Visual Studio 2022 or newer with C++ compilers and Windows 10 (or newer) SDK (recommended)
 * Visual Studio 2019 with C++ compilers and Windows 10 (or newer) SDK
 * Visual Studio 2017 with C++ compilers and Windows 10 (or newer) SDK
 * Visual Studio 2015 with C++ compilers and Windows 10 (or newer) SDK

Visual Studio 2017 (or newer) is detected using `vswhere.exe` as well as VSCOMNTOOLS environment variables.
Visual Studio 2015 is detected by looking at "SOFTWARE\Microsoft\VisualStudio\14.0_Config\InstallDir" in the registry as well as VSCOMNTOOLS environment variables.
Windows 10 (or newer) SDK is detected by looking at "SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0\InstallationFolder" in the registry.

Unable to detect any compatible Visual Studio installation!
 * Found Visual Studio 2022 installation without C++ tool components


   at Unity.IL2CPP.Bee.BuildLogic.WindowsDesktop.WindowsDesktopBuildLogic.UserAvailableToolchainFor(Architecture architecture, NPath toolChainPath, NPath sysRootPath, Boolean targetIsSimulator)
   at PlayerBuildProgramLibrary.PlayerBuildProgramBase.GetIl2CppToolChain(PlatformBuildLogic platform, Architecture architecture, NPath toolChainPath, NPath sysrootPath)
   at PlayerBuildProgramLibrary.PlayerBuildProgramBase.SetupIl2CppBuild()
   at PlayerBuildProgramLibrary.PlayerBuildProgramBase.<SetupPlayerBuild>b__94_0()
   at Bee.Core.TinyProfiler2Base.Section[T](String label, Func`1 func, Dictionary`2 metadata)
   at PlayerBuildProgramLibrary.PlayerBuildProgramBase.SetupPlayerBuild()
   at WinPlayerBuildProgram.WinPlayerBuildProgram.SetupPlayerBuild()
   at PlayerBuildProgramLibrary.PlayerBuildProgramBase.RunBuildProgram()
   at PlayerBuildProgramTypeWrapper.Run(String[] args)
   at Program.Main(String[] args)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
 

解决方法:

在 Visual Studio 2022 中,添加 C++ 环境,并勾选 Windows 10 SDK 安装

unity il2cpp,Unity,unity

上面两个条件安装完成后,还需要在 Unity --> Player Settings 中进行设置

在 Configuration --> Scripting Backend 这里选择 IL2CPP 

unity il2cpp,Unity,unity

接下来就可以直接发布 PC 版的项目了,发布成功后,生成的文件和 Mono 不太一样

unity il2cpp,Unity,unity

发布 Android 也不需要改多少配置,这里我只是将 ARMv7 换成了 ARM64,其他的设置就是默认的。

unity il2cpp,Unity,unity

Android 打包是真的慢,一个空包差不多用了 20 分钟,不过包小了很多,只有 10 M。

unity il2cpp,Unity,unity

end文章来源地址https://www.toymoban.com/news/detail-860410.html

到了这里,关于Unity 使用 IL2CPP 发布项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一次Unity3D IL2CPP 打包错误

    目录 一、错误描述 二、问题分析 三、解决方法 四、效果验证 五、后记 采用IL2CPP生成的时候,出现了4个错误: (1)Building LibraryBeeartifactsWinPlayerBuildProgramei6vjku08_i_vm6.lump.obj failed with output: (2)BuildFailedException: Incremental Player build failed! (3)Build completed with a result of ‘

    2024年02月03日
    浏览(44)
  • 解决Unity安卓编译错误: IL2CPP需要的资源提取失败

    解决Unity安卓编译错误: IL2CPP需要的资源提取失败 在开发Unity游戏时,我们经常会遇到各种各样的问题。其中一个常见的问题是,当我们尝试将游戏导出为Android应用程序时,可能会遇到一个名为\\\"Failed to extract resources needed by IL2CPP\\\"的错误。本文将介绍如何解决这个问题,并提供

    2024年02月03日
    浏览(48)
  • Unity 安卓构建错误:IL2cpp 需要提取的资源提取失败

    Unity 安卓构建错误:IL2cpp 需要提取的资源提取失败 问题描述: 在 Unity 中进行安卓构建时,可能会遇到一个报错信息:“failed to extract resources needed by IL2cpp”。这个错误通常发生在将 Unity 项目构建为安卓应用程序时,而 IL2cpp 则是 Unity 用于将 C# 代码编译为本地代码的工具。

    2024年02月04日
    浏览(42)
  • 2023年Unity Il2CPP/MONO FPS逆向工程

    实战引擎 : Unity Il2CPP/Mono 学完可做 : 森林之子,后室,逃离塔科夫,BattleBit,Rust等 几乎通杀全部Unity引擎游戏 简介: 实战编程代码:C/C++ B站空间:https://space.bilibili.com/2134677790 课程详细目录 :2023年Unity Il2CPP/MONO FPS逆向工程 · 语雀 联系方式 :点击课程详细目录查看 效果图

    2024年02月13日
    浏览(42)
  • Unity2020 打包报错:windowUnity.IL2CPP.Building.BuilderFailedException

    在打包的时候报错:windowUnity.IL2CPP.Building.BuilderFailedException 解决方法:把IL2CPP换成mono,重新打包即可 依次点击:Edit-Player-Configuration-Mono 再次重新打包即可

    2024年02月16日
    浏览(43)
  • 反编译Unity IL2CPP APK:深入探索逆向工程技术

    反编译Unity IL2CPP APK:深入探索逆向工程技术 在移动应用开发领域中,Unity引擎被广泛使用以创建令人惊叹的游戏和应用程序。然而,有时候我们可能需要研究某些应用程序的内部机制或者了解其实现细节。本文将介绍如何反编译基于Unity引擎的IL2CPP APK,并提供相应的源代码和

    2024年02月06日
    浏览(45)
  • 新版UNITY游戏(IL2CPP类型)使用内嵌型机器翻译插件XUnity.AutoTranslator的食用方法

    #新版UNITY游戏(IL2CPP类型)使用内嵌型机器翻译插件XUnity.AutoTranslator的食用方法# 文档更新时间:2022/4/3 20:02:50 网络具备访问github.com的能力 能够进行网页翻译的浏览器(用来查看官方的说明文档),以及耐心 网络能够访问机器翻译服务(谷歌等),如果使用百度需要注册百

    2024年02月09日
    浏览(101)
  • Unity WebGL 打包il2cpp.exe did not run properly!

    是中文问题,WebGL的illcpp对执行过程中一点点的中文都不允许存在。包括 硬盘的中文名称 参考 如何更改磁盘盘符的名字 我的文档中的用户名有中文 系统用户名有中文 win+L封锁之后解锁会出现当前系统用户是否有中文 打包路径中有中文 这个很好解决 环境变量中有中文 由于

    2024年02月16日
    浏览(51)
  • Unity IL2CPP包Crash闪退提示 Cause: null pointer dereference 解决办法

    最近打包到安卓测试时进logo后一直闪退,打开Android Logcat后发现抛出crash 看样子是空引用崩溃的 在网上找了几个方法来试试,到最后才发现是场景里有Missing物体 方法1.关闭StripEngineCode 在Project Settings选择Player页,在里面的Other Settings取消勾选Strip Engine Code 我试了这个对我没用

    2024年03月17日
    浏览(54)
  • 【软件逆向】如何逆向Unity3D+il2cpp开发的安卓app【IDA Pro+il2CppDumper+DnSpy+AndroidKiller】

    课程作业要求使用反编译技术,在游戏中实现无碰撞。正常情况下碰撞后角色死亡,修改为直接穿过物体不死亡。 il2CppDumper。 DnSpy。 IDA Pro。 AndroidKiller。 一、使用il2CppDumper导出程序集 将{my_game}.apk后缀修改为{my_game}.zip,使用解压工具解压至文件夹{my_game}。(my_game为apk的文件

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包