Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly
Unity 之 發布Mac報錯il2cppcore.dll did not run propertly
- 一,遇到問題
- 二,嘗試解決
- 2.1 方案一:打包Mono
- 2.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,之前只有在查看打包資源占用大小時查看過,沒有打包失敗查看編輯器日志的習慣,這次算是學會了~
本文解決你的問題了嗎?若你遇到的問題有其他的解決方案,歡迎你在評論區分享出來。
總結
以上是生活随笔為你收集整理的Unity 之 发布 Mac 报错 il2cppcore.dll did not run propertly的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RISC-V架构生态及相关学习记录
- 下一篇: mysql locate索引_MYSQL