首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么使用IL2CPP后端构建会导致统一中更大的apk大小

为什么使用IL2CPP后端构建会导致统一中更大的apk大小
EN

Stack Overflow用户
提问于 2018-09-26 08:31:48
回答 1查看 2K关注 0票数 3

我在使用Unity2018.2.3和.Net 4.6脚本运行时。

我有两场比赛。当我使用IL2CPP后端构建时,apk大小总是大于Mono后端。

第一场比赛:

单机APK尺寸:12.9MB

IL2CPP的APK大小:13.7MB

第二场比赛:

单机APK大小: 39 MB

IL2CPP: 45 MB的APK大小

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 12:25:52

发生这种情况有几个原因。

首先,带有Mono的Android构建在APK中提供托管程序集。这些程序集是在Android设备上编译成机器代码的。另一方面,IL2CPP提前将托管程序集编译成机器代码,并在APK中发布机器代码。这些托管程序集中的IL字节码比机器代码更紧凑,原因有两个:

  1. 只有实际执行的托管代码被JIT转换为机器代码。IL2CPP必须将其全部转换。
  2. 仿制药都需要提前扩展。IL2CPP可以共享一些泛型实现,但不是全部(特别是不具有值类型参数的泛型实现)。JIT只在使用它们时生成泛型实现。

第二,默认情况下,统一为带有ARMv7和x86的IL2CPP体系结构生成机器代码。因为IL2CPP需要提前生成代码,所以第一点中提到的更大代码的所有问题都是重复的。例如,如果您不需要支持x86,您可以修改播放器设置以避免构建它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52513334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档