美文网首页程序员
升级Xcode10.0采坑记

升级Xcode10.0采坑记

作者: YYSky | 来源:发表于2018-09-20 10:05 被阅读1207次
    怀着激动的心情,升级了苹果系统和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啦。

    相关文章

      网友评论

        本文标题:升级Xcode10.0采坑记

        本文链接:https://www.haomeiwen.com/subject/xulgnftx.html