制作自己的 Pods 依赖库

CocoaPods 的所有 Pods 都托管在 GitHub 上, 如果要制作呢, 第一步我们就要创建我们的GitHub仓库, 以AIAttributedString 为例

创建仓库

add .gitignore 选择 Objective-C, Add a license 选择 MIT License

创建完毕后, copy 仓库链接按钮, 使用 HTTPS, 因为 CocoaPods 要求使用 HTTPS, 不然会有不安全的警告

然后把仓库clone到本地

1
git clone https://github.com/oneofai/AIAttributedString.git

制作

1. 创建 .podspec 文件

Pods 都要依赖一个扩展名为 .podspec 的描述文件, 文件的名称要和依赖库的名字保持一致, 所以我们的文件名为: AIAttributedString.podspec, 内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Pod::Spec.new do |s|
s.name = "AIAttributedString"
s.version = "0.0.1"
s.summary = "a custom attribute string category."
s.description = <<-DESC
a attribute string category used on iOS.
DESC
s.homepage = "https://github.com/oneofai/AIAttributedString"

s.license = "MIT"
s.author = { "oneofai" => "youremail@gmail.com" }
s.platform = :ios, "8.0"
s.source = { :git => "https://github.com/oneofai/AIAttributedString.git", :tag => "#{s.version}" }

s.source_files = "AIAttributedString", "AIAttributedString/**/*.{h,m}"
s.frameworks = "Foundation", "UIKit"
s.requires_arc = true
end

当然你也可以使用命令创建

1
pod spec create AIAttributedString

但是这样 CocoaPods 帮你生成的 .podspec 文件中会包含所有条目, 其中很多我们并不需要, 你可以拷贝上边我的条目, 把相关地方改了就可以了

2. 关于 License

CocoaPods 强制要求所有的 Pods 依赖库都必须有License文件, 否则验证不会通过, 你可以在创建仓库的时候自动选择加上 License 文件, 一般使用 MIT License 即可, 我们上边创建仓库的时候就要已经勾选了, 所以这一步我们就可以略掉了

3. 依赖库

你想把哪些文件作为依赖库的文件共享给他人使用, 就把相应的文件放到一个文件夹就可以了, 在此, 我们在当前目录下再创建一个和依赖库名称相同的文件夹 AIAttributedString , 然后把库文件放进去, 现在目录结构如下

一般呢, 别人制作的库中都 Demo , 因为我已经写好了, 所以就一同放在文件夹里了, 正确的步骤是先创建好 Demo, 再做这些操作, 因为你不可能连库都没写好, 就去制作 Pods 的对吧, 肯定是写好了库, 再去分享

测试提交

验证

经过了上边的步骤, 我们还需要一步, 就是用 CocoaPods 的命令去验证我们的库, 没做验证是不能提交的

1
pod lib lint

如果一切正常, 这条命令执行完后会呈现出下边的输出

1
2
3
-> AIAttributedString (0.0.1)

AIAttributedString passed validation.

如果有任何, 比如说方法过期未使用 HTTPS 链接.podspec 文件有语法错误, 或者是任何字段填写不正确, 它都会在这里以[warning][error]提示你, 提示很详细, 你根据提示的内容去修改相应的地方, 或者把关键字丢进 Google 查一下就好了

上传到 GitHub

1
2
git add . && git commit -m "version 0.0.1"
git push origin master

给仓库打上标签

1
2
git tag 0.0.1
git push --tags

不出什么意外的话, 代码已经 pushGitHub 的远端仓库了

做完上边的操作, 依赖库还不能使用 CocoaPods 安装使用, 因为它只是在 GitHub 上, 这时我们只需要将.podspec 文件上传到 CocoaPodsSpecs仓库 中即可

添加 .podspec 文件到 Specs 仓库

因为 Specs 这个仓库并非我们创建的, 而是 CocoaPods 官方创建的, 我们并不能随意的往里 push 文件, 而

fork 一份, 添加修改, 然后 push 给原作者, 等待审核, 这条路已经被堵死了…

CocoaPods 为我们提供了一个更为安全的方法 trunk

需要代理

1
pod trunk register youremail@gmail.com 'yourname' --description='stuff' --verbose

其中 youremail 改为你自己的 email, yourname 改成你的名字, description 按需填写, 执行完成后呢, 如果你是第一次使用 trunk, 会需要一封邮件确认, 提示如下

1
[!] Please verify the session by clicking the link in the verification email that has been sent to youremail@gmail.com

然后去邮箱查看邮件确认即可

通过如下命令, 查看你注册的 trunk 信息, 包括注时间、邮箱、发布过的 Pods 等

1
pod trunk me

然后提交我们的 .podspec 文件

1
pod trunk push AIAttributedString.podspec

这条命令做了如下三件事

  1. 验证本地的 podspec文件, 我们上边使用 pod lib lint 验证过一次了
  2. 上传 .podspec 文件到 trunk 服务
  3. .podspec 文件转为 .podspec.json 文件

如果没有什么报错的话, 会有如下提示

1
2
3
4
5
6
7
8
9
10
11
12
13
Updating spec repo `master`
Validating podspec
-> AIAttributedString (0.0.1)

Updating spec repo `master`

---------------------------------------------------------------
🎉 Congrats

🚀 AIAttributedString (0.0.1) successfully published
📅 April 10th, 17:16
🌎 https://cocoapods.org/pods/AIAttributedString
👍 Tell your friends!

我们的 Pods 就制作完成了

1
2
pod setup
pod search AIAttributedString

应该就可以找到了

让你需要让别人帮助你维护依赖库时, 可以提供权限

1
pod trunk add-owner AIAttributedString otheremail@gmail.com
0%