IL2CPP 与 Mono2x 和 Android 部署
Posted
技术标签:
【中文标题】IL2CPP 与 Mono2x 和 Android 部署【英文标题】:IL2CPP vs Mono2x and Android deployment 【发布时间】:2021-05-27 15:31:43 【问题描述】:IL2CPP 是 Unity 开发的脚本后端,您可以在为某些平台构建项目时将其用作 Mono 的替代方案。注意 - IL2CPP 仅在为以下平台构建时可用:
android AppleTV、ios*、Nintendo 3DS、Nintendo Switch、Playstation 4 Playstation Vita、WebGL*、Windows 应用商店、Xbox One我有一个项目(unity 5.2)已切换为 Android 部署。我试图将我的脚本从 Mono2x 切换到 IL2CPP,它向我展示了这一点
Andriod 上的 IL2CPP 是实验性的,不受支持
所以,我的简单问题是,如果它仍然不受支持,那么为什么包含该选项,IL2CPP 和 Mono2x 之间的根本区别是什么。为什么我切换到 IL2CPP 脚本后端?
我还检查了 unity 5.5.2 在 windows 平台部署中没有 IL2CPP 选项。
【问题讨论】:
【参考方案1】:信息基于 Unity 版本 2018.2:
IL2CPP (Intermediate Language To C++) 是 Unity 开发的脚本后端,您可以在为各种平台构建项目时将其用作 Mono 的替代方案。 IL2CPP(提前 (AOT) 编译器)支持以与 Mono 脚本后端相同的方式调试托管代码。
使用 IL2CPP 构建项目时,Unity 会将 IL 代码从脚本和程序集转换为 C++,然后为您选择的平台创建本机二进制文件(例如 .exe、apk、.xap)。 IL2CPP 的一些用途包括提高 Unity 项目的性能、安全性和平台兼容性。
每个脚本后端都有优点和缺点,这些优点和缺点会影响您决定哪个是适合您的情况的正确选择:
IL2CPP:
与 Mono 相比,代码生成得到了显着改进。 可以在 C++ 中从上到下调试脚本代码。 您可以启用引擎代码剥离以减少代码大小。 构建时间比 Mono 长。 仅支持提前 (AOT) 编译。单声道:
比 IL2CPP 更快的构建时间。 由于即时编译 (JIT),支持更多托管库。 支持运行时代码执行。 必须提供托管程序集(mono 或 .net 生成的 .dll 文件)。IMP 点数:
Android 播放器设置中的默认目标架构是 带有 IL2CPP 和 Mono 脚本后端的 armv7 和 x86。
UWP 或 iOS 11 及更高版本不支持单声道。默认 iOS 播放器设置中的体系结构是 armv7 和 arm64 与 IL2CPP 脚本后端。
UWP 版本仅支持 IL2CPP 和 .NET,.NET 脚本后端 (已弃用)使用 Microsoft 的 .NET 来支持脚本。
【讨论】:
这个答案是从各种 Unity 文档中复制粘贴的,没有参考。请编辑您的答案以包含由 mod 编辑的 gamedev SE 上的 your same answer 之类的引用。以上是关于IL2CPP 与 Mono2x 和 Android 部署的主要内容,如果未能解决你的问题,请参考以下文章
Unity 在为 Android 构建时在运行时抛出 IL2CPP 构建错误? 2018.4.5f1
Unity上线google商店 用IL2Cpp打包64位版本和Android APP Bundle优化 及产生的bug
Unity Android IL2CPP 无法正常运行 Building 64bit aab Error