使用CocoaPods来管理第三方库

在求快、求快、求更快的IT行业,项目的开发效率一直被视为项目成功与否的关键因素。作为开发人员,如果码码躬亲,当然不太可取,能利用别人的开源的第三方类库,那是最好不过的事情了。然而当一个项目中使用了十几个第三方类库的时候,你有没有想过要如何管理这些类库呢?
在iOS项目中,CocoaPods便是这样一款工具。

CocoaPods github
CocoaPods官网

这个工具在2011年就有了,我是刚刚知道,尝试着使用了一下,感觉很棒。下面就记录从安装到使用的过程:

  • 安装
  • 使用
  • 问题

安装

第一步:

1
sudo gem install cocoapods

第二步:

1
pod setup

以上两步都会比较慢,第二步特别慢,请耐心等待。第二步的时候是在下载数据,你可以到~/.cocoapods目录下,查看下载进度du -sh *

使用

第一步:

在项目根目录下创建一个名为Podfile的文件

1
touch 项目根目录/Podfile

第二步:

将需要用到的库名称写到文件中,以SDWebImageJSONKit为例:
在编写Podfile之前,先来看看CocoaPods中有没有这两个库,需要用pod search命令搜索一下,

1
pod search SDWebImage

然后看到这样的信息,

1
2
3
4
5
6
7
8
9
10
-> SDWebImage (3.5.2)
   Asynchronous image downloader with cache support with an UIImageView category.
   pod 'SDWebImage', '~> 3.5.2'
   - Homepage: https://github.com/rs/SDWebImage
   - Source:   https://github.com/rs/SDWebImage.git
   - Versions: 3.5.2, 3.5.1, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.7.4, 2.7, 2.6, 2.5, 2.4 [master repo]
   - Sub specs:
     - SDWebImage/Core (3.5.2)
     - SDWebImage/MapKit (3.5.2)
     - SDWebImage/WebP (3.5.2)

这就说明这个库存在,看到pod 'SDWebImage', '~> 3.5.2’这句了吗,复制一下,等会会用到。同理,JSONKit也可以这样查看一下相关信息。

好了,现在我们可以编写Podfile文件了,文件的具体格式如下(记事本打开还是vim打开,各位请随意):

1
2
3
platform :ios
pod 'SDWebImage', '~> 3.5.2'
pod 'JSONKit', '~> 1.5pre'

注意:platform :ios,冒号前后,前面有空格,后面没有空格,否则会出错的。

第三步:

先cd到项目根目录,执行下面命令

1
pod install

到此基本上就OK了。打开项目根目录瞧瞧,是不是有点不一样了,目录结构大概是这样

然后用.xcworkspace打开工程就OK了
更改了Podfile文件,就需要重新运行一下这条命令pod install

问题

1、在项目工程中无法引用类库

你发现了吗?你想使用#import "JSONKit.h”,发现根本没有,你试试#import <JSONKit.h>,这个应该是可以的,而且在程序中也能使用了,完全没问题。但是对于优点强迫症的我,还是需要引号也能引用类库。具体的办法如下:
在项目工程的targets中,不是pod工程,Build Setting -> User header Search Paths,新建一个path${SRCROOT},并且路径选择为recusive,然后你再试试#import "JSONKit.h”,应该没问题了。

2、执行pod install后,出现这样的提示:

[!] The target `project name [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.

感觉不是每次会出现,我第一次的时候出现这样的提醒,你可以参考这里

3、执行pod命令时,总是出现这样的一个错误

1
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb:212: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040707

答案尚不知

参考文章:
《使用CocoaPods来做iOS程序的包依赖管理》
《CocoaPods安装和使用教程》
《CocoaPods 出现 OTHER_LDFLAGS 错误的解决方法》

在使用过程中,再遇到情况,会持续更新

iOS