最新消息
目前 xcode 9.3 已经解决了该问题
Asset Catalog
Known Issues
When using Xcode 9.2 to create apps that deploy to iOS 8 and later, images in the asset catalog may be corrupted when viewed on devices running iOS 8.3 and earlier. (35379713)
Workaround: Build the app using Xcode 9.1, or use Xcode 9.2 and set the deployment target to iOS 8.4 or later.
趁着下载 Xcode 9.1
的空隙,在周末的早晨记录一下这个坑,希望能解决相同遭遇同行的困惑。
始因
昨天刚发布了适配 iPhone X
的最新版本,之所以使用 Xcode 9.2
打包,是因为早期的适配,通过 Xcode 8.2
打包,安装到 iPhone X
上显示的效果是没有适配。
这个也是无法解释的,我们开发使用的 Xcode 9
,在适配过程中没有遇到该问题,总是升级就对了。
刚好最近苹果爹发布了 Xcode 9.2
,就索性升级到最新版本。
持续化集成就是方便,代码提交以后,喝杯咖啡的工具,就上传成功,等待审核。
也就是在昨天中午,收到审核通过的提醒,很奇怪,这个时候应该是他们休息的时间。
然后,就非常肯定,因为在适配的过程中,特意找了两个 iPhone X
的用户帮助测试体验。随着审核通过,就很快发布出去。
问题
大概下午3点钟,距离发布版本只过了 3 个小时左右。收到客服妹子的一个大写的问号。
这一瞬间,整个人都是懵的,慌忙让用户重启 APP
,重启系统,升级系统,最后被用户拒绝掉。
既然是必现的问题,不能将问题推到升级系统上,该解决还是要尽快解决的。
接着就开始着手另外一个项目,晚上回到家开始思考,问题存在的版本近期究竟改了什么内容。同时也下载了 iOS8.1
的模拟器,使用最新版本的 Xcode
运行看了下效果,确实如此是复现的。
所以,要马上改变态度,和客服同志搞好关系,早点认错才能走得更远。
回忆
1. 删掉LaunchScreen.sb 文件
为了适配 iPhone X
的启动图,同时在启动后使用启动图做了简单的效果,决定使用 LaunchImage
的方式设置启动图。
在更改代码后,尝试了一下修改结果,依然是非正常的。
效果如下,丝毫没有改变:
2. Xcode 版本升级
这次的改动比较小,所以在排除上述的改动后,直接想到的就是可能就是这个问题,但是很少会怀疑苹果爹会挖这么大的坑,让开发者跳进去。
不管如何,降级版本试试就知道是不是这个原因。
Xcode9.2 | Xcode9.1 |
---|---|
![]() |
![]() |
通过上述对比,确定问题就处在 Xcode
版本上。
解决方案
1. 等苹果爹更新
如果苹果爹一直没注意到这个问题,或者没有人提,谁知道还要等多久?
关于此问题,我已经向苹果爹提交了 bug
,期待后续修复:
2. 先降级 Xcode
确切的说,这是目前最快捷的一个方式,保证没有问题
3. 改变图片资源存储
图片不要放在 asset
里面,方法放在bundle
里面就没问题。不知道是 Xcode9.2
bug
还是没设置相关属性
4. 资源问题优化
换成9.1,不过我发现 @2x, @3x 这三个图标都填满的就没这 BUG
,只放一个才有