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" => "rongming.2008@163.com" }
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 rongming.2008@163.com
郵箱會收到一封確認郵件,確認成功:
- 推送代碼到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自動添加的一些相關文件。