cocoapods用于管理iOS项目库依赖,类似于nodejs的npm、java的maven、python的pip等工具,它基于ruby(ruby的配置和库管理向来让我很头痛)。
修改ruby源
要使用ruby,第一件事是更改ruby源,在国内,rubygems.org镜像基本处于不可用状态。这里改为淘宝提供的免费ruby镜像:
1 | $ gem sources --remove https://rubygems.org/ |
安装cocoapods
1 | gem install cocoapods |
生成Podfile
进入项目根目录,使用命令pod init
生成默认的Podfile
,如下:
1 | # Uncomment this line to define a global platform for your project |
期间可能遇到root账户不能使用pod命令的问题,这是因为较新版本的cocoapods限制了root账户,遇到这个问题不用四处查或者想让root也支持,直接切换到其他普通账户即可,我这里切换到账户sumory,su - sumory
尝试install
可能遇到的第一个问题,编码,不要忽视这个问题,不然后面可能会遇到莫名其妙的错误。
1 | sumory@sumory:/data/swift-project/Weather $ pod install |
解决:把Podfile的编码改为utf8,然后运行相关pod命令前export LANG=en_US.UTF-8
,或者直接加到shell相关配置的地方都可以。
添加依赖并安装
以添加SCLAlertView
(一个自定义的弹出框组件)为例,Podfile如下(注意这样写会引发错误):
1 | # Uncomment this line to define a global platform for your project |
会遇到这个错误(那一大坨就不贴出来了,主要错误提示就是下面这个):
1 | NoMethodError - undefined method `add_dependency' for nil:NilClass |
解决:参考issue#1720,将Podfile修改为:
1 | # Uncomment this line to define a global platform for your project |
出错原因可参看该issue评论。
至此再运行pod install
即可成功。
1 | sumory@sumory:/data/swift-project/Weather $ pod install |
总结
需注意以下几点(再次体会到npm才是用过的最优秀的包管理工具)
- 安装时更换ruby源,不要浪费生命在GFW上
- root账户问题
- 编码问题要注意,这个与具体机器环境有关
- 编写Podfile的规范等