如何创建一个私有pod库

本文写的不是很详细,只是记录自己操作的一个大致过程。更加详细的操作,大家不妨参考使用Cocoapods创建私有podspec,我也是按照上面一步一步操作的,只不过个人觉得那个排版看起来真的不太友好。如果英文不错的话,其实我更建议大家看看下面的英文参考链接。

准备工作

首先创建两个Git仓库,一个用来存放私有Spec Repo,另一个则存放我们私有的类库。因为Github上面私有库是要收费的,所以我选择了Coding

创建私有Spec Repo

  1. 创建本地私有Spec Repo,在终端输入下面命令即可

    1
    2
    # pod repo add [Private Repo Name] [Coding HTTPS clone URL]
    $ pod repo add DQBSpecs https://git.coding.net/qingbo/DQBSpecs.git
  2. 输完命令运行后,就在~/.cocoapods/repos/目录下自动生成了一个名为DQBSpecs的本地私有Spec Repo.

创建Pod项目工程文件

如果是有现有的组件项目,并且在Git的版本管理下,那么这一步就算完成了,可以直接进行下一步了。

如果你的组件还在你冗余庞大的项目中,需要拆分出来或者需要自己从零开始创建一个组件库,那么建议你使用Cocoapods提供的一个工具将这一步与下一步结合起来做。

现在来说一下这个工具,相关的文档介绍是Using Pod Lib Create,就拿我创建的DQBLibrary为例子具体讲一下这里是如何操作的。

首先cd到要创建项目的目录下,然后执行

1
$ pod lib create DQBLibrary

接下来会出现几个选项,输入你所期望的就OK啦,附上我的选项截图:

创建podspec文件

如果现在有了现成的项目(是指不是通过pod lib create XXXX来创建的项目,如果是通过pod lib create命令创建的项目默认就会生成一个podspec文件)那么就需要给这个项目创建一个podspec文件,创建它需要执行Cocoapods的另外一个命令,官方文档在这里

1
$ pod spec create YourLibrary git@xxxxx/YourLibrary.git

执行完之后,就创建了一个podspec文件,它其中会包含很多内容,可以按照需求进行编辑,没用的删掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Pod::Spec.new do |s|
s.name = "DQBLibrary" #名称
s.version = "0.1.0" #版本号
s.summary = "Just Testing." #简短介绍,下面是详细介绍
s.description = <<-DESC
Testing Private Podspec.
* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = "https://coding.net/u/qingbo/p/DQBLibrary" #主页,这里要填写可以访问到的地址,不然验证不通过
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" #截图
s.license = 'MIT' #开源协议
s.author = { "DQB" => "dqb1690@163.com" } #作者信息
s.source = { :git => "https://git.coding.net/qingbo/DQBLibrary.git", :tag => s.version.to_s } #项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
# s.social_media_url = 'https://twitter.com/<twitter_username>' #多媒体介绍地址
s.platform = :ios, '7.0' #支持的平台及版本
s.requires_arc = true #是否使用ARC,如果指定具体文件,则具体的问题使用ARC
s.source_files = 'DQBLibrary/Classes/**/*' #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
s.resource_bundles = {
'DQBLibrary' => ['DQBLibrary/Assets/*.png']
} #资源文件地址
# s.public_header_files = 'Pod/Classes/**/*.h' #公开头文件地址
# s.frameworks = 'UIKit', 'MapKit' #所需的framework,多个用逗号隔开
s.dependency 'AFNetworking', '~> 2.3' #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end

编辑完成之后使用验证命令验证一下

1
$ pod lib lint

向Spec Repo提交podspec

向Spec Repo提交podspec需要完成两点一个是podspec必须通过验证无误,在一个就是删掉无用的注释(这个不是必须的,为了规范还是删掉吧)。 向我们的私有Spec Repo提交podspec只需要一个命令

1
$ pod repo push DQBSpecs DQBLibrary.podspec

完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/DQBSpecs目录下查看

再去看我们的Spec Repo远端仓库,也有了一次提交,这个podspec也已经被Push上去了。

至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了

这里说的是添加到私有的Repo,如果要添加到Cocoapods的官方库了,可以使用trunk工具,具体可以查看官方文档。

使用制作好的Pod

在完成这一系列步骤之后,我们就可以在正式项目中使用这个私有的Pod了,我们需要在podfile文件顶端中多定义一个source,该source地址是我们私有git地址,示例代码如下:

1
2
3
4
source 'https://github.com/CocoaPods/Specs.git' # 官方库
source 'https://git.coding.net/qingbo/DQBLibrary.git' # 私有库
pod 'DQBLibrary', :git => 'git@git.coding.net:qingbo/DQBLibrary.git', :tag => "0.1.1"

更新podspec文件

首先修改工程里的podspec文件,然后pod install,将变动全部提交至对应的git服务器(工程文件对应的git地址,并非Spec文件对应的git地址),并添加一个新的tag值。然后pod lib lint先验证一下,再进行下面更新操作:

1
$ pod repo push DQBSpecs PodTestLibrary.podspec #pod私有库 前面是本地Repo名字 后面是podspec名字

更新成功后,你可以在~/.cocoapods/repos/的私有库目录下查看新增了一个文件夹名为tag,该目录下生成了对应tag的podspec文件。

参考资料

Jackson wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
如果你觉得我的文章还不错,欢迎打赏~