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

举报
陈言必行 发表于 2021/09/13 23:26:59 2021/09/13
【摘要】 Unity 之 发布Mac报错il2cppcore.dll did not run propertly 一,遇到问题二,尝试解决2.1 方案一:打包Mono2.2 方案二:删除引用库2.3 方案三...

一,遇到问题

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,之前只有在查看打包资源占用大小时查看过,没有打包失败查看编辑器日志的习惯,这次算是学会了~

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

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/120201639

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。