它类似于ubuntu的apt-get工具,自动下载类库及其依赖的源码,因为主要针对Cocoa的类库,因此得名。一般用于iOS第三方类库的下载。
一.安装CocoaPods
这有一个的原创文章写得比较清楚
http://code4app.com/article/cocoapods-install-usage
首先安装ruby(CocoaPods需要这个),缺省安装就这一句
sudo gem install cocoapods
但是在国内cocoapods.org被封,因此需要用taobao.com的镜像安装
gem sources --remove https://rubygems.org/ #删除原来源
gem sources -a https://ruby.taobao.org/ #加入淘宝源
sudo gem install cocoapods
pod help #测试是否安装成功,会出现帮助列表
注意淘宝的镜象已经改为https
安装提示:
[!] Unable to add a source with url
https://github.com/CocoaPods/Specs.git
namedmaster-> 1
. You can try adding it manually in~/.cocoapods/repos
or >viapod repo add
.
有几个原因1.找不到xcode,可以调整,其中
解决:sudo xcode-select -switch /Applications/Xcode7.2/Xcode.app
2.是没有在网页登录https://github.com ,导致无法https下载
pod update –no-repo-update
二.安装类库
在xcode项目目录下打开终端,这时有两种情况,
项目目录包含Podfile
如果是有名为Podfile文件,表示可以直接安装
#pod update #直接根据Podfile文件下载类库
pod update --verbose --no-repo-update #安装不升级CocoaPods的spec仓库
pod install --verbose --no-repo-update
其中在国内,直接调用pod update会一直卡住,所以做一下
练习:试着安装一下 https://github.com/ScottLogic/beautify-ios
项目目录下不包含Podfile
手工编写一个Podfile文件,
最简单可以包含两行
platform :ios
pod "AFNetworking", "~> 2.0"
其中AFNetworking换成你的模块名称,后面是版本号,如果不知道最版本号是多少,可以用如下命令查找最新版
pod search AFNetworking
接下来操作接pod update pod install 即可
Xcode编译
如果项目文件有xcworkspace文件,必须打开这一个,没有才打开xcodeproj项目文件,按照编译即可
三.常见问题解决
ssl 版本过低
server hello A: sslv3 alert handshake failure
pod –version
0.38.2
解决办法,安装0.37版本
sudo gem uninstall cocoapods #卸载
sudo gem install cocoapods-downloader
sudo gem install colored
sudo gem install cocoapods -v 0.37
当前ssl库版本太低
比如安装前
openssl version
OpenSSL 0.9.8zg 14 July 201
用brew重新安装
brew install openssl
Xcode编译错误
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 update 没有执行pod install
解决办法:进入到工程目录重新pod install一下
找不到Pods库
在一切都配置对的情况下,提示找不到模块的.a库
ld: library not found for -lPods-XXXX
这个可以查看一下项目目录是否同时有 xcodeprj 和xcworkspace文件,如果是,必须打开后者,因为它包含最终项目和Pods库项目文件,只有用它编译才会找到这个库。