Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly相关的知识,希望对你有一定的参考价值。

一,遇到问题

Unity 发布Mac卡在Building native binary with IL2CPP,翻译为:使用IL2CPP构建本机二进制文件

停一会之后,报错信息如下:
Exception: /Applications/Unity/Hub/Editor/2019.4.13f1c1/Unity.app/Contents/il2cpp/build/deploy/il2cppcore/il2cppcore.dll did not run properly!


二,尝试解决

2.1 方案一:打包Mono

在PlayerSettings面板 --> Player --> OtherSettings 下 Scripting Backend设置为Mono:

结果:Mono模式下可以正常打包。

2.2 方案二:删除引用库

由于我之前在IL2CPP模式下打过包,没有问题;然后我又用出问题的Unity版本创建了新工程,也设置为IL2CPP模式打包也没问题。

所以我认为是引用了外部插件导致的,于是开始一个一个进行删除,打包测试。

结果:删除了外部引用库,也没不可以正常打包

2.3 方案三:添加模块

刚好一个同学在Windows打包时也遇到了这个问题,他的解决方法是:在VS中添加Desktop development with c++ 这个模块,然后就可以打出包了

由于系统不同,Mac的VS只有这种,并没有Windows上那些模块…

我又试着在VS Code中去查找这个模块,结果VS Code连接不上商店,又要去解决连接插件商店的问题,最后无疾而终…


三,定位问题

废了半天劲问题也没有进展,没办法只能请教公司大佬了,大佬咨询了问题现象后,决定查看Editor Log,结果日志还真的有问题,由于il2cpp下面的各种.o文件太多了,他们占据了一中的报错日志的全部内容,而把最关键的问题,给掩盖掉了。

打开编辑器日志:

编辑器日志报错:GetAgeByIDCard是方法名,RealNamePanel是类名,一下就定位到问题代码出现在哪里了。右侧可以看到il2cpp下面的各种.o相关日志,真的是太多了…


四,解决问题

既然是定位到问题了,那么久好解决了。

问题原因:代码中调用的ios代码,没有添加宏定义进行区分。

解法办法:添加IOS平台宏定义,使其对其他平台逻辑不产生影响。

导致报错代码:

修改后代码:


五,问题反思

反思导致问题原因:其实稍微有点经验的开发者,在区分多平台的时候,都会自然而然的使用宏定义。我这里使用if (Application.platform == RuntimePlatform.IPhonePlayer) 这种形式区分平台的原因是为了在代码中可以查看到引用,方便查找调用,也为了避免误删无引用代码… 结果有一种聪明反被聪明误的感觉… …

不过通过这次问题,有学会了一招打包报错时查看Editor Log,之前只有在查看打包资源占用大小时查看过,没有打包失败查看编辑器日志的习惯,这次算是学会了~

本文解决你的问题了吗?若你遇到的问题有其他的解决方案,欢迎你在评论区分享出来。

以上是关于Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly的主要内容,如果未能解决你的问题,请参考以下文章

mac 上打开unity时有卡的声音

Unity 之 使用Mac原生好评

Unity 之 发布Mac签名配置文件(macOS授予对沙盒应用程序访问网络 | 全磁盘访问权限)

Unity 之 发布Mac签名配置文件(macOS授予对沙盒应用程序访问网络 | 全磁盘访问权限)

Unity 之 发布PC端CPU高占用温度高的问题解决方案

Mac报错✨Unity IOS打包包错:LocationService class is used but Locations Usage Description is empty.