赞
踩
为了推动安卓系统运行效率更高的64位,谷歌商店要求开发者2019年8月开始新应用必须提交64位的版本,而已经上架的Unity 5.6或更早版本引擎制作的游戏除外,他们可以只提供32位版本直到2021年8月,到时间点后需提供应用的64位版本。 本身项目也在走海外市场,现在项目用的Unity版本是5.6的,所以最近把项目Untiy版本升级,把一些遇到的问题在这里记录下供参考。
首先先了解什么是安卓64位,这是通过安卓设备的CPU类型来区分的,通常有以下几种类型,更详细的可以看下该博主的文章
总的来说ARM 64位架构拥有很多优点:更强的安全性、更好的性能、更大的可寻址内存、更高的数字精度以及更丰富的指令集,从开发者的角度来说迁移到64位Android是必然要的。如何查看自己安卓机CPU类型,可以在AS里输入 adb shell getprop ro.product.cpu.abi 来查看:
因为项目一些插件以及稳定性的原因,升级选择了Unity 2017.4.30f1 LTS版本。看下下面编辑器的一些设置选项,可以看出Mono是不支持ARM64的,所以要支持AMR64我们打包的时候要设置成IL2CPP。
那Mono跟IL2CPP到底是什么?我们知道Unity引擎是支持多平台,但是我们开发时用的c#语言本身是不具有跨平台能力的只能在Windows运行,就是因为Mono和IL2CPP才使得我们用Unity开发的游戏才可以发布到不同平台,这两者分别是什么做到的,原理上有啥区别?
通过上面两者对比可以看出两者的区别,因为一些平台包括IOS,微软的Xbox等为了系统安全是不允许JIT的,所以只能选择使用IL2CPP,它的优点就是因为最终使用的是CPP,所以执行的效率相对来说更快,而且通过各个平台C++编译器对我们的代码编译时的优化,我们的程序尺寸相对也会的缩小。
这次升级Unity版本除了常规的第三方插件检查是否可继续使用,Unity API变化修改之外,遇到的主要问题有以下几个:
- ndk {
- abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a'
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。