發佈開源框架到CocoaPods入坑指南

  • 我的原文博客地址: 發佈開源框架到CocoaPods入坑指南
  • 在開發過程當中必定會用到一些第三方框架, 只要安裝了CocoaPods, 而後經過pod install命令, 就能夠集成框架到項目中了
  • 但是若是想要把本身的框架或者組件也開源出去, 讓別人也可使用, 那該如何入手 ?
  • 對於CocoaPods還不是很瞭解的或者沒有安裝的童鞋, 可自行百度或者參考用CocoaPods作程序的依賴

搭建框架

建立倉庫

  • CocoaPods項目的源碼在Github上管理,因此第一步咱們須要建立一個屬於本身的倉庫
  • 根據圖下圖所示建立本身的項目

建立倉庫

上傳文件

  • 要開發框架必然就要上傳文件, 這裏推薦SourceTreeGitHub客戶端, 固然也可使用終端命令上傳
  • 使用git管理工具咱們這裏暫不贅述, 不懂得能夠自行百度
  • 終端使用git命令上傳, 主要命令以下
//cd到當前文件夾
// 建立本地倉庫
git init
// 添加名稱爲origin的遠程鏈接
git remote add origin '你的github項目地址'
// 將本地代碼加入本地倉庫裏
git add .
// 提交修改到本地倉庫
git commit -m '你的修改記錄'
// 推送master分支的代碼到名稱爲origin的遠程倉庫
git push origin master
複製代碼

建立Podspec描述文件

  • 該文件爲Cocoapods依賴庫的描述文件,每一個Cocoapods依賴庫必須有且僅有那麼一個描述文件
  • 簡單地講就是讓CocoaPods搜索引擎知道你的代碼的做者、版本號、源代碼地址、依賴庫等信息的文件
  • 文件名稱要和咱們想建立的依賴庫名稱保持一致
pod spec create 框架名字

// 示例:
pod spec create TitanModel
複製代碼
  • 該命令將在本目錄產生一個名爲TitanModel.podspec文件
  • 可用Sublime Text或者Atom打開該文件,裏面已經有很是豐富的說明文檔, 可是不少都是咱們不須要的
  • 官方Podspec文件的編寫格式可參考 Podspec Syntax Reference
  • 下面介紹如何聲明第三方庫的代碼目錄和資源目錄,還有該第三方庫所依賴ios核心框架和第三方庫
  • 去掉文件中的一些註釋信息, 能夠看到也就剩下如下內容了
Pod::Spec.new do |s|
  s.name         = "TitanModel"
  s.version      = "0.0.1"
  s.summary      = "A short description of TitanModel."
  s.description  = "這是詳細的描述, 可是字數要比summary的字數多, 否則上傳的時候回有警告提示, 我這麼說你能明白了嗎?不明白的話我也沒辦法了"
  s.homepage     = "https://github.com/CoderTitan/TitanModel"
  s.license      = "MIT"
  s.swift_version = "4.0"
  s.author             = { "CoderTitan" => "quanjunt@163.com" }
  s.source       = { :git => "https://github.com/CoderTitan/TitanModel.git", :tag => "#{s.version}" }
  s.source_files  = "Classes", "Classes/**/*.{h,m,swift}"
  s.exclude_files = "Classes/Exclude"
 
end
複製代碼
  • s.name:名稱,pod search搜索的關鍵詞,注意這裏必定要和.podspec的名稱同樣,不然報錯
  • s.version:版本號,to_s:返回一個字符串
  • s.summary: 項目簡短的簡介
  • s.description: 這個是詳細的描述, 要注意的是字數要比summary的長, 不然上傳的時候可能會爆出警告
  • s.homepage: 項目主頁地址
  • s.license: 許可證
  • s.author: 做者
  • s.source: 項目源碼所在地址
  • s.platform: 項目支持平臺
  • s.requires_arc: 是否支持ARC
  • s.source_files: 須要包含的源文件
  • s.public_header_files: 須要包含的頭文件
  • s.ios.deployment_target: 支持的pod最低版本
  • s.social_media_url: 社交網址
  • s.resources: 資源文件
  • s.dependency: 依賴庫,不能依賴未發佈的庫

source_files寫法及含義html

"TitanModel"
"Classes/**/*.{h,m}"
複製代碼
  • *表示匹配全部文件
  • *.{h,m}表示匹配全部以.h.m結尾的文件
  • **表示匹配全部子目錄

將本身的項目打成tag

  • 由於cocoapods是依賴tag版本的,因此必須打tag,之後再次更新只須要把你的項目打一個tag,而後修改.podspec文件中的版本接着提交到cocoapods官方就能夠了
  • 要注意的是, 這裏提交的版本號要和TitanModel.podspec文件中的版本號一致
git tag "v0.0.1"  
git push --tags
複製代碼

上傳Podspec

  • Podspec修改完成後, 上傳到服務器時, 咱們須要使用trunk進行上傳
  • 首先要註冊trunk, 在註冊trunk以前,咱們須要確認當前的CocoaPods版本是否足夠新。trunk須要pod0.33及以上版本,若是你不知足要求, 須要從新安裝pod
  • 更新結束後,咱們開始註冊trunk, 可參考官方文檔Getting setup with Trunk
  • 終端輸入如下命令
pod trunk register 郵箱地址 '用戶名' --description='描述'

// 示例
pod trunk register quanjunt@163.com 'CoderTitan' --description='macbook'
複製代碼

執行該命令後, 你的郵箱會受到一封郵件, 可是郵件要到垃圾郵件中才能找到, 打開郵件找到郵件中的網址並打開ios

image

若是打開郵件中的連接和下面的頁面同樣, 則表示註冊成功git

註冊成功

最後輸入以下命令github

pod trunk push TitanModel.podspec
複製代碼

時間較長,耐性等待,大概5-10分鐘, 成功後結果以下json

trunk

  • 上面圖片中能夠看到執行了Updating spec repo master命令, 該命令主要就是更新本地的Specs文件
  • 查看文件夾位置, 打開訪達文件夾, Shift+command+G快捷鍵, 打開前往文件夾操做, 輸入以下目錄便可查看
~/.cocoapods/repos/master/Specs
複製代碼

測試本身的cocoapods

  • 終端輸入pod search TitanModel查看
  • 可是若是輸入上述命令後, 終端輸出以下錯誤
[!] Unable to find a pod with name, author, summary, or description matching `TitanModel`
複製代碼

這是由於你的框架已經上傳, 可是你的本地的搜索文件search_index.json沒有更新, 因此搜索不到, 能夠執行下面命令刪除search_index.json文件swift

rm ~/Library/Caches/CocoaPods/search_index.json
複製代碼
  • 也能夠直接找到該文件刪除
  • 查看文件夾位置, 打開訪達文件夾, Shift+command+G快捷鍵, 打開前往文件夾操做, 輸入以下目錄便可查看
~/Library/Caches/CocoaPods/
複製代碼

搜索成功bash

search

總結

最後對上述涉及到的終端命令作一個簡單的總結服務器

終端命令

  1. 開源庫發佈以後,須要給項目打上tag
git tag "v0.0.1"  
git push --tags
複製代碼
  1. 進入到項目根目錄下,建立podspec文件
pod spec create TitanModel
複製代碼
  1. 編輯podspec文件中的相關信息,有兩個比較重要的地方s.sources.source_files, 修改完成後, 驗證是否有誤
pod spec lint TitanModel.podspec
複製代碼
  1. 註冊pod trunk
pod trunk register orta@cocoapods.org 'Orta Therox' --description='macbook air'
複製代碼
  1. 發佈到trunk
pod trunk push TitanModel.podspec
複製代碼
  1. 搜索發佈的框架
pod search TitanModel
複製代碼
相關文章
相關標籤/搜索