ios
目前unity只有il2cpp模式的编译才支持64位系统,mono是不支持的。
苹果在2016年1月就要求所有新上架游戏必须支持64位架构,所以必须要选il2cpp。
android
从2019年8月1日起,在Google Play上发布app必须支持64位体系。从021年8月1日起,Google Play将停掉尚未支持64位体系的APP。
在国内上架应该 32 64 都可以
Mono方面:
mono是一款开源、免费、可定制的跨平台.NET运行环境。由于.net只能在windows,mono相当于是一个.net CLR的跨平台变种,就是为了解决跨平台的移植问题。
在运行IL方面上,热更也需要基于JIT,安卓支持即时编译JIT,虽然热更方便,但如果代码中有病毒木马,也一样编译。
IL2CPP:
最早IOS是支持MONO,但MONO只能支持32位,而且2016年后苹果要求必须64位。
IOS出于安全考虑,不允许JIT,而且因为禁止脚本为动态分配内存赋予执行权限,所以使用反射会有限制,只能静态编译,只能FULL AOT或者il2cpp,热更相对于安卓就比较麻烦。
在有泛型的情况下,代码很可能会报错,因为泛型T只有在执行的时候才知道自己的类型,属于动态的,所以静态编译会直接跳过这句代码,在运行的时候就会报错:尝试JIT的error.