Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly
Posted 陈言必行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
Unity 之 发布Mac签名配置文件(macOS授予对沙盒应用程序访问网络 | 全磁盘访问权限)
Unity 之 发布Mac签名配置文件(macOS授予对沙盒应用程序访问网络 | 全磁盘访问权限)
Mac报错✨Unity IOS打包包错:LocationService class is used but Locations Usage Description is empty.