CocoaPods制作第三方代码库,发布到官方Pod和自己的私有库

萌图镇楼

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

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621A0CE7Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券