使用CocoaPods来管理第三方库
在求快、求快、求更快的IT行业,项目的开发效率一直被视为项目成功与否的关键因素。作为开发人员,如果码码躬亲,当然不太可取,能利用别人的开源的第三方类库,那是最好不过的事情了。然而当一个项目中使用了十几个第三方类库的时候,你有没有想过要如何管理这些类库呢?
在iOS项目中,CocoaPods便是这样一款工具。
这个工具在2011年就有了,我是刚刚知道,尝试着使用了一下,感觉很棒。下面就记录从安装到使用的过程:
- 安装
- 使用
- 问题
安装
第一步:
1 | sudo gem install cocoapods
|
第二步:
1 | pod setup |
以上两步都会比较慢,第二步特别慢,请耐心等待。第二步的时候是在下载数据,你可以到~/.cocoapods
目录下,查看下载进度du -sh *
。
使用
第一步:
在项目根目录下创建一个名为Podfile的文件
1 | touch 项目根目录/Podfile |
第二步:
将需要用到的库名称写到文件中,以SDWebImage
和JSONKit
为例:
在编写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 错误的解决方法》
在使用过程中,再遇到情况,会持续更新