之前,公司的项目代码一直遗留着两个的第三方框架库问题 ,因为之前有很多任务压身比较忙,就暂时把其抛到'重要但不紧急’的事项中, 这两天升级到8.3,有些第三方库因为版本没有升级,所以报警告比较烦,所以就抽了点时间研究了下这个问题.
一:
这个项目 pod install 之后我发现并没有更新到最新版本的第三方库 并且出现以下的警告 运行代码就会第三方库全体报错,无止境修改代码就是无法运行
所以,先从这些警告入手, 进入工程项目文件夹 ->右键点击 .xcodeproj 文件 显示包内容 -> 打开 .pbxproj 文件 -> 文本搜索提示警告的内容 ‘OTHER_LDFLAGS’ 和’ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES’ -> 找到这些内容删除
然后输入 pod update 进行更新, 就可以看见CocoaPods 将第三方库内容 更新最新版本 , 再次运行工程项目代码, 就可以运行了
二:
升级到Xcode 8.3 版本之后, iPad 版本 无法运行, 第三方库报错 :
Module compiled with Swift 3.0.2 cannot be imported in Swift 3.1
首先我在 Stackoverflow 中搜索类似问题 ,得到的答案大部分都是在工程文件BulidSettings 将 Swift Language Version
这个属性设置为 YES ,可是在我这里并不能解决问题.
最后经过分析,是因为 第三方库的编译版本是3.0 而升级之后需要利用3.1进行编译 , 需要更新第三方动态库, 发现了是用 Carthage 来管理第三方库的, 更新第三方库在 SwiftyJSON 处报错无法更新完成, 提示操作超时, 在 Google 搜索解决方案, 发现现在暂时无解,因为 SwiftyJSON 暂时没有出 Carthage 的3.1版本, 没有解决办法,那是不行的,既然 Carthage 无法使用, 那没办法只能更换到 CocoaPods 了.
新建了个分支,将项目整体拖过来将有关 Carthage 的文件全部删除, 更换成 Pod 文件进行更新,更新完成进入项目中编译,就会发现两个错误
看见报错不要慌.. 慢慢来 分析分析
看了报错会发现,是之前的配置没有删除, 所以还在找之前的配置路径, 知道为什么 就可以解决了.
在 Bulid Phases 中找到 Run Script 删除方框内的配置
删除了之后还会出现 第一个警告 ,那肯定还是哪里有配置文件没有删干净了, 下来怎么找呢.
利用全局搜索 , 找到了 这个地方还在用 ,那就对了, 删除他
再次运行项目, 完美运行,没有任何警告报错. 美滋滋, 哎这就很舒服
完!