CocoaPods是一个负责管理iOS项目中第三方开源代码的工具。使用CocoaPods可以为我们节省设置和更新第三方开源库的时间。 下面将分为两部分来讲述如何安装和使用CocoaPods。
安装方法
这里安装的深层原理不加以解释了,想了解的朋友访问本文末尾的链接。这里只描写最简化的步骤。
在终端里执行以下命令:
sudo gem install cocoapods
要是不成功执行以下操作
# 添加 taobao Mirror 不然被墙掉没办法下载
gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
# 查看是否成功
gem sources -l
# 安装
sudo gem install cocoapods
淘宝镜像最近(2017.10)好像不好用了,可以使用 https://gems.ruby-china.org/ 代替下
如果还不成功,可能是因为,Ruby环境不够新,可能需要更新以下:
sudo gem update --system
之后再重新执行
sudo gem install cocoapods
配置CocoaPods
假设在桌面上有个项目 Test
1.创建Podfile,在终端执行以下命令
# 进入项目的路径
cd desktop/Test/
# 创建Podfile文件
touch Podfile
2.手动或使用终端打开Podfile文件,写入内容(举例如下)并保存
platform :ios, “7.0”
pod "AFNetworking", "~> 2.0"
你也可以在终端进行搜索所要用的第三方库,查看其版本,然后按上述方法写入(写入时只需要接着添加pod “xxxx”,"~> x.x"这一句就可以)比如搜索JSONKit,偷懒找的一张图=.=
# 以下两个命令任选其一
# 安装库
pod install
# 更新库
pod update
到项目中使用
到这里就已配置完成。这时你会发现项目文件夹里比刚创建室多了下面几个文件
Podfile
Podfile.lock
Pods
Test.xcworkspace
这里要注意的是再次打开项目要打开Test.xcworkspace,而不是在打开Test.xcodeproj,打开之后项目里就会有相关的Pod生成的项目管理文件。
至此,OC环境下就可以直接在需要的类里面#import "AFNetworking.h"了。而swift中使用参考swift与objective-c混编,设置好直接在桥接文件里面引用即可。
另外,有关CocoaPods pod install/pod update 下载慢的问题
最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动
原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
遇到的问题:
ld:library not found for -lPods
这里问题产生的原因是build Phases-Link Binary With Libraries里多了两个有关pod的.a文件,点击show in the finder时是不存在的,把这两个.a删除就好了
这应该也能作为ld:library not found for -lXXX这种类似问题的解决方法。
CocoaPods的安装使用和常见问题
1.在执行sudo gem install cocoa pods指令安装的时候提示下面的错误
ERROR: Error installing cocoapods:
activesupport requires Ruby version >= 2.2.2.
在命令行输入:ruby -v
来查看当前ruby的版本.确定版本是低于2.2.2后就可以开始进行ruby的升级.
具体升级ruby的方法可以参考:
http://blog.csdn.net/lissdy/article/details/9191351 这个链接中的内容(大体操作过程相同,只是要安装的版本号的差异,大家也可以自行查找其它资料来升级自己的ruby)
解决方法: 由于你的ruby版本偏低,需要升级你电脑上的ruby.
一般通过rvm来升级ruby.也可参考:Mac上更新Ruby
最后两步的安装过程较慢
2.出现错误:'The sandbox is not sync with the Podfile.lock'
错误如下显示:diff: /../Podfile.lock: No such file or directory
diff: Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.`
解决办法:终端执行 pod install 重新安装更新即可,执行之前应确保 pod 已经安装。
3.执行 pod install 时出现 is not used in any concrete target. 问题
解决办法:修改 podfile 以指定target
示例:
修改前:
platform :ios, ‘7.0‘
pod ‘ReactiveCocoa‘, ‘2.1.8‘
pod ‘objectiveflickr‘, ‘2.0.4‘
pod ‘LinqToObjectiveC‘, ‘2.0.0‘
pod ‘SDWebImage‘, ‘3.6‘
修改后:
platform :ios, ‘7.0‘
target "工程Target名字" do
pod ‘ReactiveCocoa‘, ‘2.1.8‘
pod ‘objectiveflickr‘, ‘2.0.4‘
pod ‘LinqToObjectiveC‘, ‘2.0.0‘
pod ‘SDWebImage‘, ‘3.6‘
end
之后在运行 pod install 就可以了。
4.出现 pod[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
解决方案:
pod repo add master https://github.com/CocoaPods/Specs.git
然后提示执行'pod setup'
如果出现
pod[!] The `master` repo is not a git repo.
进入/users/你的用户名/.cocoapods/repos,删除master文件夹然后执行
podpod setup
如果是安装多个Xcdoe,还需要选择Xcode的路径
sudo xcode-select -switch /Applications/Xcode.app/
xcode-select -p
参考文章:
CocoaPods报错:The dependency `` is not used in any concrete target
iOS解决Unable to add a source with url `https://github.com/C
Xcode7自带Git创建的项目"Couldn’t communicate with a helper application."