Bug螺旋

经常在各种开发工具和发布系统间切换的朋友估计会深有体会,平时工作一切正常的系统,就因为一个非常规操作,或者一个版本更新,导致连锁崩坏,平时不会出现的问题接二连三的出现。

最近就遇到了这样一个bug螺旋,横跨多天,耗费了好几个小时才最终解决。

然而一切的起因,是新iPhoneX的发布…

我们的一个小游戏被要求做iPhoneX适配。

iPhoneX那个齐刘海,大背头,如果说不是Apple搞出来恶心开发者的,我都不信。

但是发行商的要求还是应该尊重一下,毕竟我们也希望能继续拿推荐。

问题是提前适配是拿不到实体机的,只能用Xcode9提供的模拟器调试。

下面这个悲剧的bug螺旋就要开始了。

因为要用iPhoneX模拟器,所以需要在unity输出的时候,要切换成simulator版本。

但是我们集成了发行商的sdk,这个坑爹sdk要我们自己写unity封装不说,还没有x86版本,不能在模拟器里运行。

发行商说他们后面会更新修复这个问题,但是希望我们能先处理一下,因为预计的更新时间有点来不及了。(当然,直到最后发行商sdk更新了,仍然没x86版本,所以…)

为了赶时间,只能开个分支把发行商的sdk删掉,然后再输出simulator版本。

输出之后,发现Xcode 9.0的模拟器有一个致命bug,simulator会用软件模拟来跑所有的shader,硬件加速被迷之关掉了,导致游戏被卡在1 fps的速度…

一帧一帧跑肯定没法debug,所以又更新了Xcode 9.1beta2

总算是可以正常运行了,但是unity自动给多余屏幕空间添加了黑边,并不能充分利用iPhoneX的屏幕。

搜了一下,原来是unity 5.6.2p4这个版本还不支持新iPhoneX。需要等新的Unity更新。

等了一个礼拜,更新了 5.6.4p1,重新在模拟器里运行,发现居然还是有黑边。

又仔细看了一遍Unity关于iPhoneX适配的一个论坛帖子,发现在发布的时候有一个splash screen的选项,不能设置成none,如果是none的话,就不会充分占用屏幕。

修改之后,再跑simulator,总算是去掉了黑边…

UI适配之后,用Xcode 9.1beta2打包上传。

在发布的时候itunes connect后台说不能用beta版本的Xcode打包…

只能用Xcode 9再次打包。

这过程中,还因为unity还不能自动输出iOS 11新要求的那个1024x1024的appstore图标,导致忘记手工拖进去,反复打包了好几遍。

论软件工程的脆弱性…