萌图镇楼
CocoaPods在这里就不多做介绍了,相信大家都对此都使用过,也知道其对我们的好处。CocoaPods可以使我们项目管理第三方更容易,平时第三方库都是pod install下来的,再也不用之前的手动拖进工程了。那么我们今天就来说下我们自己怎么制作第三方并发布到CocoaPods官方;还有项目组件化,把自己的模块封装成库并发布到私有的git上。
*环境安装
首先我们需要安装CocoaPods环境,之前写过CocoaPods环境安装,没安装的同学可以跟着安装下。最好安装最新的环境,否则执行下边步骤可能会出现错误。
*制作本地库
打开目录,cd到指定目录,输入指令创建库。“ZMBase”是库的名字。
输入命令后会显示下载模板,会有几秒钟等待。
模板下载好以后,需要你回答几个问题:
接下来会自动执行pod install。
执行完后会自动打开工程,如果没有自动打开,我们可以手动打开ZMBase.xcworkspace,到此为止一个空的本地库已经出现了。你会看到如下目录结构
1.jpg
我们可以在ReplaceMe.swift位置添加我们的代码,添加自己的代码。
2.jpg
*注意点:1、我们自己的代码不管是新添加文件、还是现有代码有改动,都需要需要在cd到Example下执行pod install后,才能导入头文件import ZMBase,代码才会更新。2.我们自己的代码文件最多一层文件结构即Animation文件夹内只能放代码,不能再创建子文件夹。3.每个类文件如果想暴露出去,则需要在代码类名前添加修饰符即(public class xxx或者open extension xxx),添加public、open,而extension不能用open修饰所以用plublic修饰。4.如果已经暴露的类,想暴露里边的函数方法,则也需要在方法 func 前加public,否则外部调用会找不到方法名。
到这里就可以导入import ZMBase到ViewController.
3.jpg
到这里本地库我们已经制作好了,如果把我们本地当做git库的话,这时候我们只需要在你其他的项目或者工程的Podfile文件里添加如下:
ZMTest:是项目名称
ZMBase:本地私有库
path:是指定本地库所在的位置
*本地库提交到CocoaPods远程仓库
首先我们先了解下Specs和Specs Repo、Code和Code Repo。
Spec:我们使用CocoaPods的指令创建好本地库之后,默认生成的podspec文件。它描述该库某一个版本的信息,比如库的名字、版本号、描述、依赖库等等。
Specs Repo:是Git库存放Specs文件,它包含了所有可用的第三方库。每个库都会有独立的文件夹,每个版本以独立的子文件夹保存。文件夹中只有一个描述文件,也就是Spec。
Code:就是我们自己库的源代码。
Code Repo:就是Git库存放源代码的地方。
*注意:Specs Repo和Code Repo是不一样的,存放的地址也不一样,不能存放到同个git库下*提交到官方的CocoaPods1.提交源代码到git
接下来我们先建个git仓库来存放代码。
4.jpg
出现error的原因是,我之前已经创建了ZMBase的repository。
执行完命令后,这时候已经把代码提交到了git上,如下图:
5.jpg
2.提交Spec文件到Specs Repo
--1>提交到官方的Specs上
首先先用cd到Spec文件所在的目录,然后执行pod lib lint
库没有通过验证,说明Spec配置有问题,在Spec出现warnings是不行的,我们可以根据警告进行修改,也可以我们执行pod lib lint --allow-warnings
当出现ZMBase passed validation.的时候,说明验证通过。
接下来要做第二件事,把Spec提交到官方的CocoaPods的Specs Repo
提交之前,你需要注册pod账号。实质上是将"邮箱--名称--电脑"绑定在一起,所以这里不需要密码。
以下是该指令的帮助文档,大概意思是:
如果第一次注册,邮箱和名称都是必须的。如果已经注册过,可以省略名称(除非你想修改名称)。推荐填写描述信息,以及给出了一些Examples,按着Example做就可以了。
如果出现以上图示则说明提交到官方CocoaPods已经成功,可能是用pod search ZMBase 这时候不会搜索的,原因可能有延迟,需要等待一个小时左右,才会搜到。
总结提交Spec步骤:
1.给项目打tag(必须要打tag,CocoaPods中的不同版本,实质是不同的tag,不打tag会导致下一步验证不通过)
2.检查合法性
结果
3.提交到Specs Repo
--2>提交到自己私有的Specs上
首先我们先创建一个git库,用于管理我们的Specs。
创建后的git地址https://github.com/miaozhang9/ZMSpecccc.git
在终端执行
添加成功后我们需要把ZMBase.podspec推送到ZMSpec库中
如果出现warning可以执行
到这里我们已经成功发布到ZMSpec git上了,我们来看一下我们的ZMSpec的git项目:
6jpg
这里的OTBase是之前发布的OC库。
查看我们本地的Specs库:
直接Findle ->右键 -> 前往文件夹 -> 输入:~/.cocoapods/repos ->点击前往
7.jpg
至此,我们的私有库创建发布结束。但是我们注意到,LATSpecs的README.md文件是空的,为了后期的维护更新,以及团队小伙伴的使用方便,建议完备一下信息。
终端执行
readme.jpg
我们发布的私有库和发布到官方的库都已经完成,那么我们接下来,来验证一下。
*验证发布的私有库
新建工程TestPodLib然后,cd 到主目录
编辑podfile
注意:podfile文件里要加上
pod install后我们来看下工程目录
pod install后的目录.jpg
我们会看到.h、.m及源码都能暴露出来,是因为我们spec文件
总结要点cocoapods创建Swift(OC)私有库:
至此,我们的私有库、发布到官方cocoaPods库已经发布结束。具体更详细的信息,建议大家多多参考CocoaPods官网。
*更新版本
一些需要选项:
lint完整写法(有依赖库、允许警告):
上传完整写法(有依赖库、允许警告):
若是出现错误信息
[!] The repo at is not clean
更新下我们的版本库,
demo地址
Specs: https://github.com/miaozhang9/ZMSpecccc.git
Swift: https://github.com/miaozhang9/ZMBase.git
OC: https://github.com/miaozhang9/OTBase.git
下边是一些podSpec相关的文章,不太懂得可以看下。
配置Spec踩过的坑
podspec文件讲解
有问题大家可以留言!!!
作者:Miaoz0070
链接:https://www.jianshu.com/p/f218fe3baff8
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
领取专属 10元无门槛券
私享最新 技术干货