一.安装过程
1.终端上更新gem。最好先使用淘宝源再更新,不然更新不了。
sudo gem update --system
检车版本
rvm -v
gem -v
2.使用淘宝源,注意是https。
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l
3.安装cooapods。最新的1.0.0正式版,安装的时候注意使用sudo,不使用sudo会有一些系统库文件拒绝访问。如果报错 Operation not permitted - /usr/bin/fuzzy_match 这时候我们应该采取如下安装方法
sudo gem install -n /usr/local/bin cocoapods 。
sudo gem install cocoapods
gem install cocoapods --pre //个人使用了预览版
//也有说法用sudo gem install -n /usr/local/bin cocoapods,因为苹果系统升级 OS X EL Capitan 后认不到cocoapods,会报错。我没使用这个安装。
切记自己用没用sudo去安装,因为用sudo能安装一遍,不用sudo也能安装一遍,这样就是安装了两遍。那么你在删除时也要对应是否有sudo,如果只删除一次,你会发现还是没有删除掉,然后不管怎么删除都在那里,其实就是因为sudo造成的安装了两遍,自己再对应删除两遍才能真的删除掉。
4.使用国内的镜像仓库,这个我没有使用,因为使用后出错。注意使用国内源在Podfile里也要设置国内源的引用,不然还是会从国外源引用。
我个人还是通过梯子直接使用的国外源,注意梯子应该是需要手动加一下github.com到pac,不然好像就不会更新,即使梯子是全局模式好像也是不更新的,我弄了两次好像都是在手动模式下在pac添加github.com后才开始更新。终端查看更新文件夹大小的命令 du -sh 。
pod repo remove master
pod repo add master http://git.oschina.net/akuandev/Specs.git
pod repo update
5.设置cocoapods本地仓库
pod setup
这里等待时间比较长,因为我查看到内容大小650M,如果自己有用ss梯子的话就可以直接从git上拉,如果没有的话可以试试国内的源。
如果在更新git时报错,就重新用命令继续更新。
二.使用
1.在项目文件夹内新建一个Podfile文件,然后按照cocoapods的要求格式设置。
touch Podfile
open Podfile
目前官方的格式是,注意使用use_frameworks!,否则报错。’MyApp’填写自己的项目名称。
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
end
然后终端进入到项目文件夹内,使用以下命令。
pod install
等待一会,第三方框架就安装好了。
注意,以后都要使用项目文件夹内的扩展名为.xcworkspace打开项目。
注意,Podfile.lock一定要保留,也一定要上传到版本库,因为这个是约束团队项目第三方框架版本的。如果不引用这个,团队内引用的第三方框架版本就会不同。
注意install和update的区别。
1、pod install
根据Podfile文件指定的内容,安装依赖库,如果有Podfile.lock文件而且对应的Podfile文件未被修改,则会根据Podfile.lock文件指定的版本安装。
每次更新了Podfile文件时,都需要重新执行该命令,以便重新安装Pods依赖库。
2、pod update
若果Podfile中指定的依赖库版本不是写死的,当对应的依赖库有了更新,无论有没有Podfile.lock文件都会去获取Podfile文件描述的允许获取到的最新依赖库版本。
接下来就可以在项目中引用了。
三.常见问题
1.项目中#import不能引用第三方框架
点击蓝色项目名,找到target - - build settings - - 搜索User Header Search Paths
添加一个${SRCROOT},后面选择recursive。
2.pod search
搜索后,使用u上翻页,d下翻页,q退出。
3.Podfile版本设置
pod 'AFNetworking' //不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetworking', '2.0' //只使用2.0版本
pod 'AFNetworking', '> 2.0' //使用高于2.0的版本
pod 'AFNetworking', '>= 2.0' //使用大于或等于2.0的版本
pod 'AFNetworking', '< 2.0' //使用小于2.0的版本
pod 'AFNetworking', '<= 2.0' //使用小于或等于2.0的版本
pod 'AFNetworking', '~> 0.1.2' //使用大于等于0.1.2但小于0.2的版本
pod 'AFNetworking', '~>0.1' //使用大于等于0.1但小于1.0的版本
pod 'AFNetworking', '~>0' //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
4.Podfile和target
当有多个target时,需要不同的方式设置Podfile,详见下面的帖子:
http://blog.csdn.net/wzzvictory/article/details/19178709
5.参考博客
私有仓库制作 http://blog.csdn.net/wzzvictory/article/details/20067595
私有框架更新 http://foggry.com/blog/2016/03/23/cocoapods-xiang-jie-zhi-geng-xin-pian/
唐巧的博客 http://blog.devtang.com/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/#jtss-douban