首页 > 编程知识 正文

unity3d不能打包原因是什么,unity后期打包出问题

时间:2023-05-04 15:45:59 阅读:228086 作者:3520

文章目录 一、前言二、NDK环境配置1、下载NDK2、Unity NDK配置3、NDK环境变量配置 三、il2cpp打包四、补充

一、前言

海,大家好,我是新发。
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_64android-ndk-r13b

3、NDK环境变量配置

虽然Unity中设置了NDK路径,但如果你没有配置环境变量,打包的时候会提示:

Invalid NDK versionUnable to detect NDK version, please pick a different folder.

我们需要把NDK路径配置到环境变量中,例:
I:android-ndk-r13b-windows-x86_64android-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.

解决办法是删掉System.Reflection.Emit的相关调用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。