今天把公司开发了半年多的工程加入了Cocoapods来管理第三方类库,过程很顺利,配置好podfile后执行pod install,第三方类库就很轻松的导入了项目中,写代码的时候也没有任何问题,但是运行起来后问题就来了。
在使用Cocoapods之前,项目中的第三方都是手动导入的,加入Cocoapods后我首先把原来项目中的Masonry删掉了,然后通过pod来导入,导入后编译没有任何问题,但是运行后立刻Crash,错误是UI控件找不到Masonry中的方法unrecognized selector sent to instance xxxxxx
,而方法确实是存在的。
** 后来找到的解决方法是:**
- 1、打开工程所在文件夹,找到.xcodeproj文件,右键选择【显示包内容】,找到project.pbxproj文件
- 2、打开project.pbxproj文件,查找
OTHER_LDFLAGS
,把和这个相关的内容都删除 - 4、重新编译并运行
** 在问题解决之前Other Linker Flages是这样显示的,跟未使用Cocoapods之前的配置是一样的 **
** 问题解决之后,是这样子的 **
然后导入所有的库都可以正常运行了
如果哪位大神知道原因,请在评论中告知,不胜感激😄
顺便附上Cocoapods的安装和使用的命令###
gem sources --remove https://rubygems.org/
// 移除源
gem sources -a https://ruby.taobao.org/
// 替换为淘宝源,详情请查看链接。
gem sources -l
// 查看是否替换成功
sudo gem update --system
// 升级ruby环境
sudo gem install cocoapods
// 开始安装Cocoapods
pod --version
// 查看Cocoapods版本,目前最新应该是1.0.1
pod search AFNetworking
// 查找
pod repo update
// 如果查找不到最新的第三方库版本,可以执行此命令更新本地pod仓库
pod install
// 初始化Cocoapods
pod update
// podfile文件修改后需要执行更新
2016-07-05更新
执行pod update的时候每次都会默认升级CocoaPods的spec仓库,有时候会卡在 Analyzing dependencies 很长时间,非常耽误时间,这时候可以使用下面的命令执行update
pod update --verbose --no-repo-update
如果提示找不到库,说明spec仓库可能不是最新版本,则可去掉 --no-repo-updateCocoaPods升级之后到最新版本,podfile里的内容必须明确指出所用第三方库的target,否则会出现The dependency `xxx` is not used in any concrete target这样的错误。
target "TargetName" do
pod ‘ReactiveCocoa‘, ‘2.1.8‘
pod ‘SDWebImage‘, ‘3.6‘
end```