怀着激动的心情,升级了苹果系统和Xcode10.0,想着体验一把Dark Mode。然而事情不会这么如你所愿。
一开始编译项目时,就出现了第一个错误,如下图:
image.png
这个错误表示项目中存在的多个info.plist文件产生了冲突,这是由于新构建系统的兼容性问题。根据苹果官方手册可以这样解决问题(使用旧的构建系统)。
解决方案:
1. In Xcode, go to File->Workspace settings.
2. Change the build system to Legacy Build system.
image.png
解决上一个问题,接着重新编译又出现多个如下图错误:
image.png
这个问题是由于当前的Xcode10.0找不到对应的系统链接库(失效的系统链接库)。
当然也是可以解决的,只是有点麻烦。
首先你要确定找不到的系统链接库(如图中的libstdc++.6.0.9),以及确定对应的替代库。
最后删除失效的系统链接库,如项目中没有添加对应的替代库,则手动添加。
每一次编译运行,都会知晓失效的系统链接库,根据名称如下图中操作进行查找与删除:
image.png
image.png
本人项目中一个特别的系统链接库情况,不知道这情况是否普遍?
image.png
为什么删除后,没问题呢?
(1)在XCode10和iOS12中移除了libstdc++.tbd,libstdc++.6.0.9.tbd这个库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。
libstdc++.tbd;libstdc++.6.0.9.tbd -》libc++
(2)由于Xcode升级7.0之后,.dylib文件被.tbd取代,因此在XCode10和iOS12中的库文件目录里找不到相应的文件
libsqlite3.dylib -》libsqlite3.tbd
libz.dylib -》libz.tbd
libc++.dylib -》libc++.tbd
libsqlite3.0.dylib -》libsqlite3.0.tbd
最后删除与添加操作完成后,就可以编译通过了,还好还好!!!
有的同学可能会问:项目组中,如果就我一人升级了Xcode10.0,别人都是用的低版本的9.0,我这样删除与添加系统链接库,会不会对其他人有所影响呢?这个问题,我已亲身验证过,不会有问题。本质原因是这些添加系统链接库早已存在于9.0版本中,而且添加的这些系统链接库本身就是替换老库的作用,所以不会有问题。
感受:
升级后,方法标识更明显,修改之处有明显标识,新增了便捷的代码块功能......,不多说了,去Write the code啦。
网友评论