更新Xcode 10之爬坑记

前言

为贯彻落实iOS 12 系统的新思想,成为了公司第一个更新Xcode 10 的探坑者

更新Xcode 10 遇到的坑

第1个坑:Xcode 10不再支持 c++.6.0.9

更新完Xcode 10,满怀激动打开项目,编译、运行。直接编译报错,懵😳。某得办法,赶快查看下报错信息。

报错信息:library not found for -lstdc++.6.0.9

图1.png

看完报错信息,直接去Build Phases里的Link Binary With Libraries添加lstdc++.6.0.9库,搜索发现没有这个库,再次懵😳。赶紧让同事看下Xcode 9 是否有lstdc++.6.0.9这个库,看了一下Xcode9里是有的。

图2.png

这里直接说原因和解决方案:

原因:

苹果在Xcode 10 和 iOS 12 中移除了libstdc++ 这个库,由libc++库替代。

苹果给出的解释是libstdc++已经标记废弃5年了,建议大家使用经过llvm优化过且全面支持c++11的libc++库。

解决方案:

方案1 :Xcode10中libstdc++相关的3个库(libstdc++、libstdc++.6、libstdc++6.0.9)都被彻底废弃了,如果自己使用的有libstdc++相关库,更改替换libc++库,如果使用的三方库中有依赖,请尽快三方反馈、告知他们更新。目前发现有使用的三方(百度地图、高德地图);

方案2(临时解决方案):拷贝缺失的 libstdc++、libstdc++.6、libstdc++6.0.9库到Xcode 10 中。

从XCode9的目录里,把缺失的.tbd文件拷贝过来,要记得拷贝2套,一套是模拟器的,一套是设备的,

以下为路径(注意不同版本的sdk 路径不同需要自己替换)

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

第2个坑:重复文件

原因:

因为三方库里带了或者重复创建的文件比如readme.md,LICENCE这类文件或者info.plis

图3.png

解决方案:

方案1:删除掉多余的info.plist文件,重新编译即可

方案2(临时解决方案):修改Xcode编译配置Xcode->File->Workspace Setting-> Build System -> Legacy Build System。

因为是使用Xcode 10编译的新特性而抛出错误,既然是编译器的新特性,接受报错去修复是最好的解决方案。改为传统编译方式,只可作为短暂的过渡,这里不推荐。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 南方周末2017新年献词《锚住幸福,穿越这时光之海》。穿越,即使被网络小说、影视剧玩坏了,与一些词一组合又焕发着力...
    圆一工作室阅读 626评论 0 1
  • 有两类人,一类是关心物,如科学家,搏物家,一类是关心人,如政治家,心理学家。 科学家关心的是物(事物)。关注物,你...
    顿慈悟语阅读 484评论 0 0
  • 1.选择驾校. 选择驾校最关键的是方便到驾校上课和方便考试。 离家近或者是班车方便能够保证很容易和方便到驾校上课学...
    deli6780阅读 252评论 0 1