1.在GitHub上建立一個項目,包括開源協議。
2.先clone到本地,放入第三方框架,而後push。html
咱們能夠建立一個tag來指向軟件開發中的一個關鍵時期,好比版本號更新的時候能夠建一個「v2.0」、「v3.1」之類的標籤,這樣在之後回顧的時候會比較方便。tag的使用很簡單,主要操做有:查看、建立、刪除、驗證、上傳。ios
列出全部tag:git tag
這樣列出的tag是按字母排序的,和建立時間不要緊。
若是隻是想查看某些tag的話,能夠加限定:git tag -l v1.* 這樣就只會列出1.幾的版本。git
git tag -a v1.0 -m 'first version'
-m後面帶的就是註釋信息,這樣在往後查看的時候會頗有用,這種是普通tag。
還有一種有簽名的tag:git tag -s v1.0 -m 'first version' 前提是你有GPG私鑰,把上面的a換成s就好了。
除了能夠爲當前的進度添加tag,咱們還能夠爲之前的commit添加tag:github
git tag -d v1.0
本地刪除好像不會同步到GitHub上,能夠在GitHub項目裏直接刪除。正則表達式
若是你有GPG私鑰的話就能夠驗證tag:git tag -v v1.0json
咱們在執行git push的時候,tag是不會上傳到服務器的,好比如今的github,建立tag後git push,在github網頁上是看不到tag的,爲了共享這些tag,你必須這樣:上傳全部tag:git push origin --tags
上傳某個tag:git push origin v1.0
swift
在工程根目錄中初始化一個Podspec文件:pod spec create UMessage_1.5.0a.podspec
Podspec文件內容:xcode
Pod::Spec.new do |s| s.name = "UMessage_1.5.0a" s.version = "1.5.0a" s.summary = "無IDFA版本" s.description = <<-DESC U-Push 友盟官方 SDK DESC s.homepage = "https://github.com/ZhugeZhan/UMessage_1.5.0a" s.license = { :type => "MIT", :file => "LICENSE" } s.author = { "ZhugeZhan" => "zhugezhan32@sina.cn" } s.platform = :ios, "8.0" s.source = { :git => "https://github.com/ZhugeZhan/UMessage_1.5.0a.git", :tag => "#{s.version}" } s.source_files = "UMessage_Sdk_1.5.0a", "UMessage_Sdk_1.5.0a/**/*.{h,m}" s.vendored_libraries = 'UMessage_Sdk_1.5.0a/**/*.a' s.framework = "UserNotifications" s.library = "z" end
說明:s.name
是咱們庫的名稱(和Podspec文件名一致)s.version
是庫原代碼版本號s.summary
是對咱們庫的一個簡單的介紹s.homepage
聲明庫的主頁s.license
是所採用的受權版本s.author
是庫的做者s.platform
是咱們庫所支持的軟件平臺,這在咱們最後提交進行編譯時有用s.source
聲明原代碼的地址s.source_files
聲明瞭咱們庫的源代碼的位置(從項目根目錄文件夾下開始)
目錄的層級關係必定要跟代碼庫的保持一致。這裏前一部分能夠不用的,由於我這裏後一部分的HUPhotoBrowser/*與前面是一致的,這個指定的目錄下的文件都會進行編譯。.{h,m}是一個相似正則表達式的字符串,表示匹配全部以.h和.m爲擴展名的文件。s.source
聲明原代碼的地址s.source_files
聲明瞭咱們庫的源代碼的位置(從項目根目錄文件夾下開始)
目錄的層級關係必定要跟代碼庫的保持一致。這裏前一部分能夠不用的,由於我這裏後一部分的HUPhotoBrowser/*與前面是一致的,這個指定的目錄下的文件都會進行編譯。.{h,m}是一個相似正則表達式的字符串,表示匹配全部以.h和.m爲擴展名的文件。s.resourcs
聲明若是該目錄下還有一些資源文件(如圖片等),這些文件並不須要進行編譯。s.vendored_libraries
聲明瞭所須要的靜態庫文件(框架裏面自帶的)s.library
聲明瞭所依賴的系統靜態庫文件(多個s.libraries
= "A", "B")s.framework
聲明瞭所依賴的核心庫 (多個s.frameworks
= "A", "B")s.dependency
咱們開發的庫中也可能還依賴第三方庫,例如JSONKit,那麼,就能夠作以下聲明: s.dependency "JSONKit", "~> 1.4"
若是有多個須要填寫多個 s.dependency服務器
編輯完podspec文件後,須要驗證一下這個文件是否可用,若是有任何WARNING或者ERROR都是不能夠的,它就不能被添加到Spec Repo中,不過xcode的WARNING是能夠存在的,驗證須要執行命令:pod spec lint UMessage_1.5.0a.podspec
注:不建議嘗試。若是框架只使用靜態庫須要加上--use-libraries
,可是這會致使 use_frameworks!
不能把框架用pod導入項目,使用swift
的人也沒法使用。框架
一、註冊Trunk(第一次須要註冊)pod trunk register zhugezhan32@sina.cn 'ZhugeZhan' --description='macbook air'
你們在註冊時須要替換成本身的郵箱和用戶名,一切順利的話就會收到一份郵件,點擊郵件中的連接後驗證一下。
郵件驗證完成以後pod trunk me
固然,若是你的pod是由多人維護的,你也能夠添加其餘維護者:pod trunk add-owner ARAnalytics kyle@cocoapods.org
二、Trunk push
pod trunk push 命令會首先驗證你本地的podspec文件(是否有錯誤),以後會上傳spec文件到trunk,最後會將你上傳的podspec文件轉換爲須要的json文件。在包含有.podspec目錄下執行命令:pod trunk push
若是你能看的上面的結果說明上傳成功了。
三、pod search 沒有結果
先執行 pod setup
執行完以後,能夠根據下面截圖的步驟:打開地址,點擊SeePodspec,而後在本地的~/.cocoapods/repos/master/Specs目錄下 看到轉換以後的json文件。
而後執行 rm ~/Library/Caches/CocoaPods/search_index.json
這樣再pod search 就會先更新search_index.json文件,就能找到結果了。
至此咱們整個製做本身的開源庫的過程就完成了,之後有新版本須要在GitHub上建立新的tag,而後修改podspec文件(s.version必定要改)就好了,而後從新執行pod trunk push命令。
pod trunk delete AFNetwroing 3.0.1
來刪除指定版本的pods (未驗證)
《如何發佈本身的開源框架到CocoaPods》http://www.cocoachina.com/ios...
《如何使用Cocoapods管理本身github上的項目,並讓其支持pod》http://www.jianshu.com/p/f146...
《GitHub建立Tag》 http://caibaojian.com/github-...