本文转自 Swift发布库到CocoaPod

建立工程 , 编写类库

  1. 新建一个iOS或其他platform的demo工程,通常Single View App即可

  2. 在demo工程新建target, file -> new -> target,选择创建Cocoa Touch Framework,该target用于包含你所要开源的所有库,假设取名为framework

  3. 在framework的target文件夹里面添加自己的开源代码,注意想要暴露出来的类、方法、属性均需要使用public或者open等修饰

  4. 现在,在demo中可以通过import framework来引用库,测试已写好的功能,测试完成后,就可以准备发布到CocoaPod了

发布到 CocoaPod

  1. 将代码提交到GitHub,并打上tag即release版本,该tag必须和pod配置文件的tag一致,否则push到pod会报错

  2. 创建配置文件xxx.podspec,xxx为发布到pod的名称,取名时先到pod搜索下是否已存在相同的库名,因为是唯一的,如果已存在则需要定义其他名称,命令如下:

1
pod spec create xxx
  1. 修改配置文件,可以在GitHub上参考其他项目是怎么写的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
1
2
3
4
5
6
7
8
9
10
11
12
13
- 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
  1. 注册trunk,pod是通过trunk来发布的
1
pod trunk register "email address" "user name" --description = "optional"
  1. 验证库代码和podspec的有效性,查看代码、配置文件是否有误
1
pod spec lint xxx.podspec

如果出现错误,根据相关提示进行修改后再验证,提示一般都比较易懂,如果实在看不懂就自行搜索进行修改.当出现xxx.podspec passed validation.则说明验证通过.

  1. 真正发布(push)到pod仓库, allow-warnings 是可选的
1
pod trunk push xxx.podspec --allow-warnings

发布成功