一、前言
海,大家好,我是新发。Unity
项目需要上架google
应用商店。而google
要求上架的app
必须支持64架构
。
如下:
详见此页:https://developer.android.com/distribute/best-practices/develop/64-bit
因为项目用的Unity
版本是5.x
,不能打出支持arm64
架构的包,
于是,升级Unity
版本到2017.4.29f1
,支持arm64
架构了,不过必须使用il2cpp
。
注:为什么不直接升级到
Unity 2019
或2020
呢?因为版本跨越越大,要处理的兼容问题越多,即使是5.x
版本升2017
版本,也耗了我好些时间来处理兼容问题。
使用il2cpp
方式打包过程中遇到一点小问题,记录一下。
二、NDK环境配置
1、下载NDK
使用il2cpp
模式打包,需要用到NDK
,所以我们需要先下载NDK
,点这里下载:
https://developer.android.google.cn/ndk/downloads/
比如我下载的是r13b
版本的Windows 64位版本
注:不同版本的
Unity
有对应的NDK
版本,Unity 2017.4.29f1
版本只能使用13b
版本的NDK
,如果配置了不对应的NDK
版本,设置时会报错:Invalid NDK version:IL2CPP requires r13b (64-bit) (13.1.3345770).
NDK
解压后如下:
2、Unity NDK配置
在Unity
中点击菜单Edit / Preferences...
,点击External Tools
,然后设置NDK
的路径,例:I:\android-ndk-r13b-windows-x86_64\android-ndk-r13b
3、NDK环境变量配置
虽然Unity
中设置了NDK
路径,但如果你没有配置环境变量,打包的时候会提示:
Invalid NDK version
Unable to detect NDK version,please pick a different folder.
我们需要把NDK
路径配置到环境变量中,例:I:\android-ndk-r13b-windows-x86_64\android-ndk-r13b;
三、il2cpp打包
il2cpp
打包过程中弹出了il2cpp.exe
已停止工作的提示框,通过日志发现是有一部分如下的代码:
[DllImport("__Internal")]
private extern static void Login();
这是iOS SDK
的方法,因为没有使用#if UNITY_IOS #endif
包起来,所以在转il2cpp
的时候失败了。
解决办法就是使用#if UNITY_IOS #endif
包起来。
四、补充
1 在Unity2017
中,不建议勾选Strip Engine Code
,否则可能转il2cpp
会失败。
2 使用il2cpp
需要预留足够的磁盘空间,否则会打包失败,因为il2cpp
会比mono
方式生成更多的临时文件,比mono
模式至少预留多5G
空间才行。
3 有些插件在il2cpp
模式下会傻掉,比如HOTween
插件,里面使用了System.Reflection.Emit
,执行Hotween
会报错:
Unsupported internal call for IL2CPP:AssemblyBuilder::basic_init - System.Reflection.Emit is not supported.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。