在Build iOS版本时,会卡在"Converting managed assemblies to C++"处。官方还专门开了这个issue,2年前提的,虽然close了但其实并没解决,在网上各种翻阅一遍后发现成了玄学...
程序世界有玄学嘛?!有...吗?囧
反正我不信~于是开始一步一步调查,最终得以破案,记录流程如下:
- 找线索。一般情况下,Unity在build失败后,会在Console面板里打印出错误日志。但这次一直卡着不动,整个Editor处于无响应状态。遇到这种情况,可以直接去看Editor的日志,不同的操作系统日志路径不同,手册里有写。
- 通过查看Editor.log,发现Build卡住的时候,并没有错误日志,最后打印出的是这么一段
CocoaPods installation detected /usr/local/bin/pod,于是想到安装GoogleMobileAds.unitypackage时,指南里提到对于iOS需要部署CocoaPods,而Unity5.0以上的版本,这些是自动完成的。 - 但实际上并没有这么简单。在Mac上部署CocoaPods,需要用到gem(Ruby界的代码托管工具)而“用gem安装CocoaPods这件事”本身由于Mac不断升级也带来很多坑。这里发一篇最新的CocoaPods安装帖子,如果牵涉到其它gem的操作比如uninstall,请自行Google。
- 根据上面帖子,最耗时间的是执行
pod setup,因为它实际上就是从github上面pull一个Repo下来,而这个Repo大小虽然只有600M(目前),但resolving一下1.9G,所以就算网速很快,resolving也很花时间,而这一切是没有进度提示的...网上有很多提速的办法,但大部分都要改源,自从XcodeGhost风波后,我对改源这种解决办法就比较谨慎,这里找到一篇不用改源的解决办法,其实就是直接从github clone,如果github都很慢,那该改源还是改源,或者科学上网吧... - 说到这里应该懂了,Unity在Building时卡住又不报错的原因,其实就在走CocoaPods安装和setup这一过程(如果之前没有做过),而这一切表现出来就是“Converting managed assemblies to C++”...(如果想验证这个过程,可以把
~/.cocoapods/repos目录移出去后再build,当卡住后进~/.cocoapods目录刷du -sh *命令来查看.cocoapods文件夹是不是一直在增大~)...所以这也是为什么网上有人说等2小时就好了,有人说等了一晚上也没好,而这些和C++一点关系都没有,所以也不是IL2CPP的锅。
终于,iOS搞定了,世界再次恢复了和平,但还有Android呢,不知道下一次灾难又会发生在何时,战斗吧!中二少年。