家里的电脑Xcode更新了最新版本,公司的电脑因为系统原因还停留在Xcode10.2.1
周末在家加班,直接用自己的电脑改项目,新建xib文件等...到了公司发现编译不了
Command CompileXIB failed with a nonzero exit code
搜索无法编译的xib文件,打开直接崩溃,有的提示需要Xcode11及以上。
打开两个版本的xib,对比之后发现有两处不同:
-
颜色的引用,这个就是导致崩溃的地方
<resources> <image name="dropdownFlag.png" width="12" height="6.5"/> <image name="select" width="21" height="21"/> <image name="unselect" width="21" height="21"/> <systemColor name="darkTextColor"> <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> <systemColor name="darkTextColor"> <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> <systemColor name="darkTextColor"> <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> </resources>
Xcode11以后,新增了暗黑模式,同时系统内部增加了好多系统颜色,使用系统颜色可以自动适配暗黑模式。
在xib内部,就体现在 把颜色放进了<resource></resource>里面,文件中引用从
<state key="normal" title="--请选择--"> <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </state>
变成了
<state key="normal" title="--请选择--"> <color key="titleColor" systemColor="darkTextColor"/> </state>
所以解决方案很显然是将引用的地方替换掉,同时将
<resource/>
里面的<systemColor name="xxx">..</systemColor>
系统颜色标签删除掉。 -
第二个就是提示Xcode11以上的问题,这个很简单,将里面的
<capability name="System colors in document resources" minToolsVersion="11.0"/>
删除掉就行了
由于Xcode中xml没有格式化什么的,删除的时候自己小心点