缘由
- 公司需求,发布SDK
- 开源精神,让更多人的人使用你优秀的代码
建立工程,编写类库
- 新建一个iOS或其他platform的demo工程,通常Single View App即可
- 在demo工程新建target,
file -> new -> target
,选择创建Cocoa Touch Framework,该target用于包含你所要开源的所有库,假设取名为framework - 在framework的target文件夹里面添加自己的开源代码,注意想要暴露出来的类、方法、属性均需要使用public或者open等修饰
- 现在,在demo中可以通过import framework来引用库,测试已写好的功能,测试完成后,就可以准备发布到CocoaPod了
发布到CocoaPod流程
- 将代码提交到GitHub,并打上tag即release版本,该tag必须和pod配置文件的tag一致,否则push到pod会报错
- 创建配置文件xxx.podspec,xxx为发布到pod的名称,取名时先到pod搜索下是否已存在相同的库名,因为是唯一的,如果已存在则需要定义其他名称,命令如下:
pod spec create xxx
- 修改配置文件,可以在GitHub上参考其他项目是怎么写的
Pod::Spec.new do |s|
s.name = "KJTouchIdManager"
s.module_name = "TouchIdManager"
s.version = "0.0.1"
s.summary = "TouchId/FaceId manager on iOS 8 or later."
s.description = "An easy way to use TouchId or FaceId, support iOS 8 or later"
s.homepage = "https://github.com/Smiacter/TouchIdManager"
s.license = "MIT"
s.author = { "Smiacter" => "Smiacter@gmail.com" }
s.platform = :ios
s.platform = :ios, "8.0"
s.swift_version = "4.1"
s.source = { :git => "https://github.com/Smiacter/TouchIdManager.git", :tag => "#{s.version}" }
s.source_files = "TouchIdManager/*.swift"
end
- name -> pod库的名称
- mudule_name -> 引用的module名称即工程创建的target名,如果和上述的name不一致的话需要指定,如果一样可以省略
- version -> 版本,和GitHub代码的tag一致
- summary -> pod库的简单介绍
- description -> pod库的详细描述,它的长度一定要比summary长,不要会有警告
- homepage -> GitHub访问路径
- license -> 遵循的授权版本
- author -> 作者,一般是自动生成
- platform -> 操作系统及最低支持版本,可指iOS/tvOS/watchOS/tvOS
- swift_version -> 如果用的是Swift,指定你使用的版本,因为pod在进行代码检查时的版本可能与你的不一致
- source -> GitHub代码仓库地址,请copy使用HTTPS的那个git地址,使用SSL的需要依赖环境,校验无法通过
- source_files -> 库的有用文件,它会告诉pod需要克隆哪些文件,*代表任意文件
- 其他,生成的.podspec文件包含了很多其他参数,可以根据自己的需求打开某些注释,打造属于你自己的podspec
- 注册trunk,pod是通过trunk来发布的
pod trunk register "email address" "user name" --description = "optional"
- 验证库代码和podspec的有效性,查看代码、配置文件是否有误
pod spec lint xxx.podspec
如果出现错误,根据相关提示进行修改后再验证,提示一般都比较易懂,如果实在看不懂就自行搜索进行修改。当出现xxx.podspec passed validation.
则说明验证通过。
- 真正发布(push)到pod仓库, allow-warning是可选的
pod trunk push xxx.podspec --allow-warning
如果出现Congrats则说明创建你自己的pod库成功,之后就可以使用pod进行使用该库了
------------------------------------------------------------
🎉 Congrats
🚀 xxx (0.0.1) successfully published
📅 September 13th, 20:17
🌎 https://cocoapods.org/pods/xxx
👍 Tell your friends!
------------------------------------------------------------
写在结尾
这就是自建pod库的基本流程,开源,让世界更美好,让自己更优秀。