前言
新的 XCode10发布了,迫不及待进行了升级,发现项目报错了,以下是一些错误及一些解决方法。
错误集锦
- pod 管理的版本库报错
由于Swift4.2一些新特性造成部分三方的库编译出错,比如Swift中的HandyJson库就因为Swift新版本特性造成错误,此时只需要更新对应的新版本库就好了,大部分三方库基本都已经对iOS12的做了新的适配了。
image.png
- 文件重复报错,错误提示
multiple command produce xxxxxx
在我的项目里面开源授权协议(即LICENSE
文件)报错显示文件重复了,按照提示删除或者去除当前文件所在的Target中就能解决问题了
缺少库 没有内容
- 一些库由于使用了
lstdc++.6.0.9
造成找不到库文件错误(是因为iOS12去掉了lstdc++.6.0.9
库导致的)
解决方案:
- 方案一:使用成新的iOS12中的库文件进行开发适配,如果是第三方库用到了,等待三方库的iOS12适配更新
- 方案二:可以通过导入iOS11中的
lstdc++.6.0.9
库作为临时解决方案
以下是方案二的操作方法:
- 可以通过将XCode9中的lstdc++.6.0.9库导入到XCode10中,我已经将该库上传到了百度云,需要的话自取(文章最后链接)。
- 下载之后两个文件夹的文件都需要导入到 XCode10中,一个是模拟器库文件,一个是真机库文件
真机库文件路径位置在 /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
添加之后,各自在对应的文件夹下制作一个lstdc++.6.0.9
替身,替身名字为lstdc++.tbd
,制作替身的目的是保证 lstdc++.tbd
的库的引用有效,他们实际上都共用一个实体库lstdc++.6.0.9
最后重启 XCode,编译运行即可
- 关于
XCode10
上传的ipa
包在iOS9
系统上崩溃的问题
这个问题是一个较为普遍的问题,苹果官方也在第一时间发布了XCode10.1beta2
来修复这样的问题,目前只能靠新版本的XCode
打包或者使用老版本的9.4.1
打包来解决在iOS9
上的崩溃问题了。
附录
lstdc++.6.0.9库百度云链接:
https://pan.baidu.com/s/1wT8oZv0eMGRBX-uPVSuffA
提取码: 7mtb
网友评论