CocoaPods库的制作
目录
- 具体步骤
- 私有库的制作(上)
- 私有库的制作(下)
一、具体步骤
1.1 准备仓库与必要的文件
- 弄一个仓库,比如PodZHH
- 创建一个文件夹PodZHH存放有效代码(仅有Public.h与Public.m)
- 在终端执行pod spec create PodZHH,会生成PodZHH.podspec, 然后编辑这个文档,强烈建议用vim编辑.如何编辑,请百度一下,或者参考PodZHH
- 在一切正确的情况下,提交到远程仓库.
- 还有一步是打一个对应的标签, 否则在push到仓库的时候会报错的.
1.2 开始生产库的过程
在这一步,我遇到的坑.CocoaPods的版本是1.1.1.导致一直不能成功,总是提示如下错误:
AbortTrap
升级到1.2.0之后就没有问题了.
以下操作均在终端执行
- pod lib lint --allow-warnings. 用于验证PodZHH.podspec的正确性
- pod trunk register 771722918@qq.com PodZHH.podspec . 用于注册PodZHH.podspec.注册成功会给发邮件,点击链接即可.
- pod trunk me, 用于查看记录
- pod trunk push PodZHH.podspec , 用于推送到公开的cocoaPods.
提示如下信息,说明可以使用:
🎉 Congrats
🚀 PodZHH (1.0.0) successfully published
📅 February 16th, 03:34
🌎 https://cocoapods.org/pods/PodZHH
👍 Tell your friends!
但是有一个问题,我执行pod search PodZHH,竟然没有找到.但是能正常的在项目中应用.
二、私有库的制作(上)
上面的方式是属于公有方式,任何开发者都能访问.那么如何制作一个私有的cocoaPod库呢?一般是用于公司内部用的库.其实也很简单,具体步骤如下:
- 创建一个私有(private)仓库
- 创建一个文件夹 PodZHHPrivate 存放有效代码
- 在终端执行pod spec create PodZHHPrivate,会生成PodZHHPrivate.podspec, 然后编辑这个文档.
- 在一切正确的情况下,提交到远程仓库.
- 使用 pod lib lint 命令验证是否通过.
这样就 OK 了.是不需要 pod trunk 操作的.
在使用上有什么区别呢?请看下图:
公有与私有在Podfile文件中的使用方法特别说明:
- 1 这种方式实际没有添加到任何的 Specs 中,仅仅是一种简单的配置而已。只能说通过这样的配置,可以使用 pod 来管理而已。实际上并不是真正的 Specs。
- 2 以这种方式弄的私有库,在Podfile中用到私有库的话,是需要私有库的账号与密码才能安装成功的。
三、私有库的制作(下)
接下来是一种比较专业的私有库的制作方法。有自己的 Specs,接下来一步一步的实现。
3.1 创建一个Specs
如同 HGSpecs,就是一个简单的仓库而已。然后 clone 到本地:
pod repo add CoderHG https://github.com/GitHubZHH/HGSpecs.git
这里的 clone 与我们通常的 clone 不一样,其中 CoderHG 是在本地的名字,按照自己的规则,随便命名。具体 clone 到什么地方了呢?可以通过这个命令在终端查看:
pod repo
这个命令会将你本地的所有库都列出来:
类似这样的:
pod repo
到现在为止,我们的一个 Specs 就准备好了。
3.2 添加 pod 到 Specs
现在我以这个项目为例子:Categorys
通过命令clone 到本地:
clone 结束之后 cd 到这个项目中:
image.png
因为里面已经有一个 HGCategorys_Private.podspec 的文件,所以我就直接将这个在终端执行这个命令:
pod lib lint HGCategorys_Private.podspec --verbose --use-libraries --allow-warnings --no-clean
为了检测一下自己写的 HGCategorys_Private.podspec 文件是否合格。
通过之后, 再进行 push 操作。然后就是这个命令:
pod repo push CoderHG HGCategorys_Private.podspec --verbose --use-libraries --allow-warnings
注意 CoderHG 代表的就是本地的 Specs 文件夹,关联了本地的文件夹的话,到时候会自动的做匹配,不会 push 到其它的 Specs 中去。
看到类似的打印, 就说明成功了:
image.png
3.3 使用
创建一个项目 PodDev, 然后 cd 进入这个项目,执行命令:
pod init
自动生成一个 Podfile 文件, 然后打开 Podfile 文件进行编辑,通常我们这样写就可以了:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'PodDev' do
pod 'HGCategorys_Private'
end
执行这个命令看一下结果:
pod install
是这样的:
image.png
提示没有找到这个 specification, 其实也是情有可原的,毕竟我们弄的这个库是在我自己的 Specs 中的,默认情况下,install 与 update 的时候是到 https://github.com/CocoaPods/Specs.git 中去找,所以我们需要指定一下,修改为这样的:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
# 公有的 Specs 地址
source 'https://github.com/CocoaPods/Specs.git'
# 私有的 Specs 地址
source 'https://github.com/GitHubZHH/HGSpecs.git'
target 'PodDev' do
pod 'HGCategorys_Private'
end
在头部指定一下 source 就可以了。
然后再执行 :
pod install
成功!!!
具体详情,请参考:private-cocoapods