在GitHub上分享本身的第三方框架以供pod使用

1、在GitHub上建立項目

1.在GitHub上建立一個項目,包括開源協議。
2.先clone到本地,放入第三方框架,而後push。html

2、在GitHub上建立Tag

咱們能夠建立一個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

  1. 首先查看之前的commit: git log --oneline
  2. 假若有這樣一個commit:8a5cbc2 updated readme
  3. 這樣爲他添加tag: git tag -a v1.18a5cbc2

三、刪除

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.0swift

3、建立 .podspec 文件進行配置

在工程根目錄中初始化一個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的人也沒法使用。框架

4、發佈到 Cocoapods 進行管理

一、註冊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命令。

5、怎麼刪除提交到cocoapods上的框架?

pod trunk delete AFNetwroing 3.0.1 來刪除指定版本的pods (未驗證)

6、參考文章:

《如何發佈本身的開源框架到CocoaPods》http://www.cocoachina.com/ios...
《如何使用Cocoapods管理本身github上的項目,並讓其支持pod》http://www.jianshu.com/p/f146...
《GitHub建立Tag》 http://caibaojian.com/github-...

相關文章
相關標籤/搜索