本文转自 Swift发布库到CocoaPod
建立工程 , 编写类库
新建一个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搜索下是否已存在相同的库名,因为是唯一的,如果已存在则需要定义其他名称,命令如下:
- 修改配置文件,可以在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
|
- 注册trunk,pod是通过trunk来发布的
1
| pod trunk register "email address" "user name" --description = "optional"
|
- 验证库代码和podspec的有效性,查看代码、配置文件是否有误
1
| pod spec lint xxx.podspec
|
如果出现错误,根据相关提示进行修改后再验证,提示一般都比较易懂,如果实在看不懂就自行搜索进行修改.当出现xxx.podspec passed validation.则说明验证通过.
- 真正发布(push)到pod仓库, allow-warnings 是可选的
1
| pod trunk push xxx.podspec --allow-warnings
|
发布成功
