Cocoapods是非常好用的一个iOS依赖管理工具,用它来管理和更新项目中的第三库使iOS开发更加方便。
使用别人优秀的代码在程序员开发过程中是非常常见的事,为别人贡献代码也是很有必要的事。
这篇文章是我总结向Cocoapods贡献代码的过程。我以自己一个非常非常简单的项目ARFPSStatus来记录这个过程。ARFPSStatus非常简单,是Swift写的在状态栏显示屏幕的FPS,源码只有一个Swift文件。
来吧!我试着为iOS开发贡献一点绵薄之力吧。
一、安装cocoapods
sudo gem install cocoapods --pre
二、创建代码并上传代码到Github
就是要发布的代码了,具体怎么上传代码到Github上我就不重复了。
三、在github上发布一个版本
点击这边的release
:
发布一个版本,假设是
0.1.0
:
创建podspec文件
常见一个<项目名称>.podspec
文件,我这边就是ARFPSStatus.podspec
文件,内容如下:
Pod::Spec.new do |s|
s.name = "ARFPSStatus"
s.version = "0.1.0"
s.summary = "ARFPSStatus - Show FPS Status on StatusBar in Swift"
s.homepage = "https://github.com/andyRon/ARFPSStatus"
s.license = "MIT"
s.authors = { "andyron" => "[email protected]" }
s.source = { :git => "https://github.com/andyRon/ARFPSStatus.git", :tag => "0.1.0" }
s.frameworks = 'Foundation', 'UIKit'
s.platform = :ios, '9.0'
s.source_files = 'ARFPSStatus/*'
s.requires_arc = true
end
- s.name – 项目名称,也就是别人使用Pod时使用的名字,需要唯一,可事先在Cocoapods上查询一下。
- s.version – 这是你 Pod 的版本。务必注意,它得和 Github release 的版本号相同,就是刚才发布的版本
0.1.0
。如果两者不匹配,就会报错。 - s.summary 和 s.description – 这两个变量最终会显示在 Cocoapods 页面上。请确保 description 比 summary 更长,否则将会报错。description不是必须的。
- s.homepage – 这是 Pod 源代码的 URL。
- s.author – 开发者信息,开发者名字和邮箱。
- s.source_files – 这是最重要的参数。不是所有Github项目中所有文件都需要提交到CocoaPods里,项目中可能有一些Demo、图片啊等,提交到CocoaPods的只需要源码,就是别人使用时最少所需的代码。
例如,我需要提交的是ARFPSStatus/ARFPSStatus.swift
文件,s.source_files
就是ARFPSStatus/ARFPSStatus.swift
,或者之后如果再在ARFPSStatus/
目录中添加其他文件,s.source_files
就可以是ARFPSStatus/*
。
当然,还可以是其它一些形式。
ARFPSStatus/*.swift
ARFPSStatus/*.{swift,plist}
Podspec文件的详细语法规则可查看官网的Podspec Syntax Reference
验证项目
CocoaPods 需要验证项目有没有错误
pod lib lint
$ pod lib lint
-> ARFPSStatus (0.1.0)
- WARN | [iOS] license: Unable to find a license file
- WARN | xcodebuild: /Users/andyron/myfield/github/ARFPSStatus/ARFPSStatus/ARFPSStatus.swift:91:17: warning: variable 'label' was never mutated; consider changing to 'let' constant
[!] ARFPSStatus did not pass validation, due to 2 warnings (but you can use `--allow-warnings` to ignore them).
You can use the `--no-clean` option to inspect any issue.
如果想忽略警告,可使用--allow-warnings
。
$ pod lib lint --allow-warnings
发布
- 创建 Trunk 账号
关于Trunk可以查看为什么做 Trunk这篇文章
创建 Trunk 账号很简单,只要一个邮箱。
pod trunk register [email protected]
邮箱会收到一封确认邮件,确认成功:
- 推送代码到Pod
pod trunk push ARFPSStatus.podspec
当然也可使用pod trunk push ARFPSStatus.podspec --allow-warnings
来忽略一些不必要的警告。
成功后:
$ pod trunk push ARFPSStatus.podspec
Updating spec repo `master`
--------------------------------------------------------------------------------
Congrats
ARFPSStatus (0.1.0) successfully published
September 28th, 11:33
https://cocoapods.org/pods/ARFPSStatus
Tell your friends!
--------------------------------------------------------------------------------
使用新发布的代码
发布成功和可能需要一段时间才能使用,可以到Cocoapods上查询。
- 项目的
Podfile
文件中添加ARFPSStatus
,并安装。
target 'FPSDemo' douse dynamic frameworks
use_frameworks!
pod "ARFPSStatus"
end
- Pods项目会多出
ARFPSStatus
目录,里面的Support Files
目录不是我添加的,是Cocoapods自动添加的一些相关文件。
参考:
基于 Swift 创建 CocoaPods 完全指南
Podspec Syntax Reference