iOS12适配笔记(持续更新)

前言

新的 XCode10发布了,迫不及待进行了升级,发现项目报错了,以下是一些错误及一些解决方法。

错误集锦

  1. pod 管理的版本库报错

由于Swift4.2一些新特性造成部分三方的库编译出错,比如Swift中的HandyJson库就因为Swift新版本特性造成错误,此时只需要更新对应的新版本库就好了,大部分三方库基本都已经对iOS12的做了新的适配了。

iOS12适配笔记(持续更新)_第1张图片
image.png
  1. 文件重复报错,错误提示 multiple command produce xxxxxx

在我的项目里面开源授权协议(即LICENSE文件)报错显示文件重复了,按照提示删除或者去除当前文件所在的Target中就能解决问题了

  1. 一些库由于使用了lstdc++.6.0.9造成找不到库文件错误(是因为iOS12去掉了lstdc++.6.0.9库导致的)
缺少库
iOS12适配笔记(持续更新)_第2张图片
没有内容

解决方案:

  • 方案一:使用成新的iOS12中的库文件进行开发适配,如果是第三方库用到了,等待三方库的iOS12适配更新
  • 方案二:可以通过导入iOS11中的lstdc++.6.0.9库作为临时解决方案

以下是方案二的操作方法:

  1. 可以通过将XCode9中的lstdc++.6.0.9库导入到XCode10中,我已经将该库上传到了百度云,需要的话自取(文章最后链接)。
  2. 下载之后两个文件夹的文件都需要导入到 XCode10中,一个是模拟器库文件,一个是真机库文件
iOS12适配笔记(持续更新)_第3张图片
需要添加的库

真机库文件路径位置在 /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,编译运行即可

  1. 关于XCode10上传的ipa包在iOS9系统上崩溃的问题

这个问题是一个较为普遍的问题,苹果官方也在第一时间发布了XCode10.1beta2来修复这样的问题,目前只能靠新版本的XCode打包或者使用老版本的9.4.1打包来解决在iOS9上的崩溃问题了。

iOS12适配笔记(持续更新)_第4张图片
XCode10.1beta版本发布note

4.tabbar 从二级页面返回时,出现跳跃

这个问题是 iOS 12.1 Beta 2 引入的问题,在 push viewController 的时候设置hidesBottomBarWhenPushed = YES, 手势返回的时候就会出现问题,主要原因是 tabBar 内的按钮 UITabBarButtonframe.size 变为 (0, 0) 导致的。

所以最简单的解决方案就是:

[UITabBar appearance].translucent = NO;

5.使用XCode9打包在iOS12上webView中js调用视频模块播放会有崩溃问题

这个问题不知道什么原因,换成XCode10打包就能解决问题了。

附录

lstdc++.6.0.9库百度云链接:
https://pan.baidu.com/s/1wT8oZv0eMGRBX-uPVSuffA
提取码: 7mtb

你可能感兴趣的:(iOS12适配笔记(持续更新))