在CocoaPods中使用自定义的第三方库
CocoaPods作为最流行的Objective-C第三方库管理工具,相信很多同学都已经用上了。
今天和大家分享一下如何用CocoaPods管理官方没有收录的第三方库。
一. podspec文件介绍
在CocoaPods中每一个第三方库对应一个podspec
描述文件,该文件描述了这个库的名称,版本,许可证,主页,作者,摘要,源码位置,平台,所依赖的其他库(包括其他第三方库以及系统的Framework),是否使用ARC等信息。
官方收录的所有第三方库的podspec文件都托管在 https://github.com/CocoaPods/Specs。当我们刚安装完CocoaPods执行
|
|
的时候,CocoaPods便会把所以收录的库的podspec文件clone到 ~/.cocoapods
目录中。当我们执行
|
|
命令的时候,便是搜索位于~/.cocoapods
目录中的所有第三方库。所以我们只要构造一个符合标准的podspec文件放在~/.cocoapods
文件夹中,便可以被pod搜索到,也就可以用pod来安装和管理了。
二. 创建一个podspec文件
下面通过我参与的项目中一个真实案例来学习相关的概念。
项目中要使用到了一个我自己Fork的库OEGridView.我们先来创建一个podspec文件:
|
|
该命令会生成一个名为 OEGridView.podspec的文件。用你喜欢的编辑器打开该文件,可以看到注释已经非常详尽了。把注释都删掉,留下我需要的字段:
|
|
便得到了一个简单而又管用的podspec文件。
三. 安装podspec
接下来的问题是这个podspec文件该放在哪里。我们当然可以按照一定的规矩直接拷贝的~/.cocoapods
目录下面
|
|
但是这样子不利于团队协作。我们可以把所以我们自定义的库做成一个repo,托管在Github上面,像我所要用的自定义库的podspec我都托管在https://github.com/pphelpermac/Podspecs.
这样,我们就可以用CocoaPods的命令来安装我们自己的repo啦:
|
|
这样安装的结果就是把我们的repo clone到~/.cocoapods
目录下面,不过这样我们的teammate或者其他人如果想用这个repo,就可以很方便地用一句命令来安装了。
四. 某些文件禁用ARC
我们的repo安装好之后就可以在podfile中引用该库了:
|
|
一路pod install
或者pod update
之后,Build一下。咦,怎么报错了。
原来OEGridView库中的 NSColor+OEAdditions
文件是不用ARC的。
对于一个采用ARC的库,podspec文件中会声明requires_arc
字段为true;当其中有一些文件不想采用ARC时,可以将这些文件声明为exclude_files,然后把这些文件作为一个subspec,subspec中的requires_arc
字段赋值为false就可以解决ARC库中单独文件不采用ARC的问题了。
|
|
还有一种方法是通过判断文件删除该文件的编译标识:
|
|
这种方法我没有尝试,试过的朋友可以分享下 :)
PS:
自从shell从bash换到zsh后,没有写过博文,所以今天才碰到这个问题:就是在zsh下运行:
|
|
会报错:
|
|
无法新建博文.
查找了一下原因是因为zsh会吧‘*’, ‘(’, ‘|’, ‘<’, ‘[’, or ‘?’
识别为查找文件名的通配符.
解决方法有:
输入
"rake new_post"
后直接回车,octpress会询问新博文的名字,这时再输入博文名就OK了。用引号把
"rake new_post"
和博文名一起括起来:rake "new_post[custom-pod-in-cocoapods]"
PPS:
第一次写技术博文,还请大家多多指教 :D