我 :“2017年还有多久?”
我 :“ ‘冬天来了,春天还会远吗?’,马上就要步入2018年,您说2017年还有多久。您就看着吧,下个月到处都是2017年年终总结!”
I’sorry,进入正题:
我个人写本文的目的只有一个:让你轻松制作自己的pod库 。可能是因为我笨?网上的教程,我看的有点😓(晕),不过最终还是摸索出来了,并且明白了123,so,请允许我以我“笨”的方式来让你轻松。
第①步:在GitHub上新建一个仓库
说明:由于自己创建PPKit时没有截图,这里为了说明,新建了PPKit1来截图说明,谅解!
第②步:clone项目到本地,并创建.podspec文件
具体clone与创建.podspec文件的命令如下:
|
|
至此,会出现Specification created at PPKit1.podspec。Good!
第③步:配置.podspec,尤其是里面的.source_files文件要注意
注意:此处开始,我们再回到PPKit。(如果你自己的库,请替换PPKit为你的库名来阅读)。
3.1 打开PPKit.podspec
文件(我用的是Sublime Text
,提示、关键字高亮处理的比较好),我觉得很有必要读读开头的3行注释,真的是很有必要。(我自己就是因为后来才读这3行注释,中间浪费了很多时间)。下面,我简单翻译下:
|
|
- 在你提交
.podspec
文件到CocoaPods
前,务必要在命令行运行pod spec lint PPKit.podspec
来确保.podspec
有效,并且删除所有的注释,包括这句(Be sure … submitting the spec.)。- 你可以在cocoapods.org看到更多关于
podspec
(pod规则)的属性的信息。- 你可以在
GitHub
上查看当前都有那些有效的、可以用的Pods
.
上面第3条,我们可以点开看一看,保证你有收获,如下:
点开后,在
This repository
里输入**AFNetworking
**,然后摁Enter键
搜索,你会看到下图,先别惊奇(至于我再下面截图上说的,本地也有,就不上图了):
看到这,如果你的项目用到了CocoaPods,有没有一种 “噢…,原来是这样的”的柳暗花明又一村的感觉,如果你有,你NB;如果没有,没有就算了,你更要认真看下去!反正我有。嘿嘿!
放大招的时候来了:CocoaPods说白了,就是帮我们管理第三方or自己的库;而它不过也是一个.xcodeproj工程。只不过,它是专门管理第三方or自己的库的工程,而它的工作原理就是:你把.podspec文件制作好,然后trunk push (后面后讲到)给它,它再把.podspec文件保存为.podspec.json文件放到GitHub,你需要的话,它通过这个.podspec.json把GitHub上对应的开源库的文件下载下来,放到你的工程里。至此,OK。
说了这么多,再来张图,证实下,我们继续讲Pod库的制作,图如下(不信也不行):
那就打开PPKit.podspec,删除里面所有的注释。然后修改,下面给出PPKit.podspec以便参考,注释我以及加进去(如果你发布的话,最好注释去掉,此处只是为了说明):
|
|
3.2 .podspec里面的.source_files的常见语法
一个宗旨:库里面每个文件、资源都要有路径指向它。
|
|
具体的语法示例及截图,见文章最后面(参考链接之前)。
第④步:更新GitHub
依次执行下面命令:
|
|
第⑤步:验证.podspec是否有效
|
|
如果验证不通过,可以执行**
pod spec lint PPKit.podspec --verbose
**查看详细的ERROR
和WARING
提示,根据提示依次解决,然后回到第四步重新来一遍。 注意:在重新开始之前,我们要删除远程库的tag
和本地的tag
,命令如下:
|
|
直到如下图的验证成功。
第⑥步:提交.podspec到CocoaPods
|
|
如果是第一次提交,需要先执行下面的命令去CocoaPods注册(填写邮箱,收取验证链接,点击链接,就OK):
|
|
然后再执行:
|
|
OLA,到此就结束了,赶紧去pod search一下,看有没有!
遇到的问题s:
pod search PPkit
搜不出
【方案一】cocoapods search 获取不到最新库的解决方法 我用的是第二种:执行 pod repo update更新本地仓库,再pod search PPkit ,就能 搜到了。
【方案二】执行 pod search PPkit –simple
【方案三】打开
~/Library/Caches/CocoaPods
,删除search_index.json
,该文件会在重新搜索时创建。
附:从AFNetworking
/PPKit
/YYKit
看podspec
语法。
研究了自己常用的开源库的文件目录,其中**AFNetworking是最完美的,也是我最想要的,而其它的大多数都是,所有.h
和.m
文件都放在一个目录下,比如:IQKeyboardManager**。对比如下图:
参考[AFNetworking](https://github.com/AFNetworking/AFNetworking)
来说明{}
里面的共用以及子目录的设置。
- 如下图中间的线:
AFURLRequestSerialization.h
、AFURLRequestSerialization.m
以及AFURLResponseSerialization.h
和AFURLResponseSerialization.m
可以写为'AFNetworing/AFURL{Request,Response}Serialization.{h,m}'
。所以:{}
里面的用逗号(,
)隔开,相当于数学中的组合.Serialization
文件不需要指定路径,只需要subspec
调用了就好,它处于第2级目录,里面除了上面的4个文件别无其它。但是这4个文件必须指定目录路径,如上面1中所示。
PPKit配置与截图说明,如下:记住那个原则:每个文件/路径都要指定对应的路径。
由YYKit学会与理解.exclude_files
.exclude_files,忽略YYKit下的,重新建文件夹(目录)来管理。
2017-11-24 03:51:40 耗时6个小时写此文!