总结一下从昨天晚上到今天上午踩过的坑, 希望能对大家有所帮助!
很多时候很多大事件貌似和我们没有关系, 但是冥冥中可能某天, 你就会感受到某个事件的影响, 比如阿里巴友盟收购了, 之前还觉得只是一个大公司收购一个小公司, 和自己没有啥关系, 但是慢慢地, 有些问题就开始暴露了, 前段时间, 友盟用户反馈sdk 突然停止服务, 给了一个阿里百川的服务, 让去迁移, 然后作为开发者, 你可以选择不用这些第三方服务, 但是为了节约开发成本, 又不得不去使用. 无奈只有去迁移.
接第三方, 一个看起来类似搬运工的活, 但是有时候也会有很多坑要踩. 下面就说一下我遇到的坑吧!
1. cocoapods 导入YWFeedback的坑
因为项目中大部分第三方库都是使用cocoapods管理, 那么要接入第三方第一件事情肯定是要看看是否支持cocoapods, 看官方接入文档说可以支持cocoapods, 然后就按照文档写的去接入, 文档如下:
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git'
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecsMirror.git'
target 'YourTargetName' do
pod 'YWFeedbackFMWK', '~> 2.0.3.1'
end
看完果断Copy and paste, 然后通过终端执行命令 pod update –no-repo-update 然后就是静待, 这个过程非常慢, 然后我就一直盯着终端 , 突然就发现一个问题, 就是明明我是执行的更新, 不知道为啥所有文件都重新安装了一遍, 然后安装到baidumapsdk的时候突然报错, 一大堆红, 看了一下, 貌似说是远程端的错误, 好像是不存在这样的库, 反正没有懂, 但是据我猜测应该是 Copy过来的前两行 source的问题, 于是乎吧那两行注释掉重新更新, 这次倒是很干脆直接报 YWFeedbackFMWK 不存在, 然后就联想了一下, 难道这个东西必须得上这个source上下载? 但是使用这两行代码就会报错, 这可如何是好, 以前从来没有研究过 podfile文件, 这次实在搞不懂, 于是乎开始找podfile 语法, 百度关键字”podfile 语法” 找到了一个比较优秀的文章 Podfile语法参考(译) 里面写了这样一段内容, 直接解决了我的疑问
Sources
Podfile检索了所有sources(repos)中的specs
Sources是全局的
,不存储在每个target定义里面
source
指定specs的位置
使用这个方法指定sources。sources的顺序是有关系的的。CocoaPods将使用pod第一次出现的source中的最高版本(后续的source中哪怕出现了更高的版本,也不予考虑)
cocoapods 官方source是隐式的需要的,一旦你指定了其他source 你就需要也把官方的指定上
例子:
指定Artsy库然后带上官方的
CocoaPods Master Repository
source 'https://github.com/artsy/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'
也就是说我的podfile文件中没有指定 默认的两个source, 导致了百度地图等很多第三方库找不到, 所以报错 加入这两行(注意一定要注意顺序) , 然后就顺利解决了这个问题, 然后继续在终端中执行pod update –no-repo-update 本以为万事大吉, 但是事情总是出乎意料, 接下来就开始说重点了: 支付宝AlipaySDK与阿里百川用户反馈YWFeedbackFMWK的冲突!
pod库更新完成后, 编译,报一个error, 按理说通过pod导入的第三方库, 环境都是默认配置好的, 不应该报错的, 但总是用这么一个意外. 下面是是报错信息我直接拷贝出来吧,
ld: warning: object file (/Users/wangjunling/Desktop/AAA-iOS/khb/Vendor/UMSocial_Sdk_Extra_Frameworks/SinaSSO/libSocialSinaSSO.a(UMSocialSinaSSOHandler.o)) was built for newer iOS version (8.2) than being linked (7.0)
duplicate symbol _OBJC_METACLASS_$_UTDIDAES in:
/Users/wangjunling/Desktop/AAA-iOS/Pods/Pingpp/lib/Channels/Alipay/AlipaySDK.framework/AlipaySDK
/Users/wangjunling/Desktop/AAA-iOS/Pods/UTDID/UTDID.framework/UTDID(UTDIDAES.o)
duplicate symbol _OBJC_CLASS_$_UTDIDAES in:
/Users/wangjunling/Desktop/AAA-iOS/Pods/Pingpp/lib/Channels/Alipay/AlipaySDK.framework/AlipaySDK
/Users/wangjunling/Desktop/AAA-iOS/Pods/UTDID/UTDID.framework/UTDID(UTDIDAES.o)
duplicate s