你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 如何發布自己的開源框架到CocoaPods

如何發布自己的開源框架到CocoaPods

編輯:IOS開發基礎

本文是投稿文章,作者:huluobobo

在開發過程中,經常會使用到第三框架,我們通過一個pod install命令,很方便的就將第三方框架加到我們自己的項目中。

如果我們也想將自己寫的組件或庫開源出去,讓別人也可以通過pod install命令安裝自己的框架該怎麼做呢?下面,我就教大家一步一步的將自己的pods發布到CocoaPods 中。如果你現在對CocoaPods還不太了解,推薦你看一看這篇文章:用CocoaPods做iOS程序的依賴管理

創建自己項目的Podspec描述文件

下面我會通過一個名為HUPhotoBrowser的項目來講解一下整個過程。

項目發布到github後,需要打上tag。之後我們在工程根目錄中初始化一個Podspec文件:

pod spec create HUPhotoBrowser

該命令將在本目錄產生一個名為HUPhotoBrowser.podspec文件。用編輯器打開該文件,裡面已經有非常豐富的說明文檔。下面介紹如何聲明第三方庫的代碼目錄和資源目錄,還有該第三方庫所依賴ios核心框架和第三方庫。這是我的podspec文件:

Pod::Spec.new do |s|
  s.name         = "HUPhotoBrowser"
  s.version      = "0.0.2"
  s.summary      = "photo browser for ios."
  s.homepage     = "https://github.com/hujewelz/HUPhotoBrowser"
  s.license      = "MIT"
  s.author             = { "Jewelz Hu" => "[email protected]" }
  s.platform     = :ios, "7.0"
  s.source       = { :git => "https://github.com/hujewelz/HUPhotoBrowser.git", :tag => "0.0.2" }
  s.source_files  = "HUPhotoBrowser", "HUPhotoBrowser/**/*.{h,m}"
   s.framework  = "UIKit"
  # s.frameworks = "SomeFramework", "AnotherFramework"

s.name是我們庫的名稱,s.version是庫原代碼版本號,s.summary是對我們庫的一個簡單的介紹,s.homepage聲明庫的主頁,s.license是所采用的授權版本,s.author是庫的作者。s.platform是我們庫所支持的軟件平台,這在我們最後提交進行編譯 時有用。s.source聲明原代碼的地址。我這裡是托管在github上,所以這裡將地址copy過來就行了。

1351863-5f185444531af1d0.png

對於很多第三方庫而言,在發布的時候都會打上一個tag,如版本0.0.1就會打上一個名為0.0.1的tag,你也可以選擇一個最新的commit來作為該庫0.0.1版的代碼, 那麼最終source就是這樣了:

{:git => "https://github.com/hujewelz/HUPhotoBrowser.git", :commit => '65584b0e0b08e01f83e66d487180c164b5182409'}

我這裡還是使用的tag,所以我這裡就是這樣的:

{ :git => "https://github.com/hujewelz/HUPhotoBrowser.git", :tag => "0.0.2" }

以後我們的庫有新版本時,我們可以修改相應的version和source。

s.source_files聲明了我們庫的源代碼的位置,所以這個地方不能填錯了。

先看一下我的目錄結構:

1351863-98aca18e60fac44a.png

所以工程根目錄下的HUPhotoBrowse文件夾才是庫的原代碼目錄。

s.source_files  = "HUPhotoBrowser", "HUPhotoBrowser/**/*.{h,m}"

目錄的層級關系一定要跟代碼庫的保持一致。這裡前一部分可以不用的,因為我這裡後一部分的HUPhotoBrowser/**與前面是一致的,這個指定的目錄下的文件都會進行編譯。如果該目錄下還有一些資源文件(如圖片等),這些文件並不需要進行編譯。可以使用s.resourcs聲明。*.{h,m}是一個類似正則表達式的字符串,表示匹配所有以.h和.m為擴展名的文件。

s.framework聲明了所依賴的核心庫,我這裡只用到了UIKit,所以是這樣的:

s.framework  = "UIKit"

如果你的項目中依賴多個庫,可以使用

s.frameworks = "SomeFramework", "AnotherFramework"

當然,我們開發的庫中也可能還依賴第三方庫,例如JSONKit,那麼,就可以做如下聲明:

s.dependency "JSONKit", "~> 1.4"

如果有多個需要填寫多個s.dependency。

編輯完podspec文件後,需要驗證一下這個文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不過xcode的WARNING是可以存在的,驗證需要執行命令:

pod spec lint PodName.podspec

當看到HUPhotoBrowser passed validation.時,說明驗證通過了。

編輯好podspec文件後就可以將該podspec文件保存到本機的~/.cocoapods/repos/master/Specs目錄中僅供自己使用,也可以將其提交到CocoaPods/Specs代碼庫中。下面我們先將其保存到本機中:

1351863-c8e31c301e9c2c59.png

下面可以看一下是否可以通過搜索找到該庫:

1351863-51c1e65c0c2a5a9a.png

同樣在需要依賴於HUPhotoBrowser這個庫的項目,可以將下列添加到項目的Podfile文件中

pod 'HUPhotoBrowser', '~0.0.2'

保存文件,並用pod install安裝HUPhotoBrowser庫。

通過以上步驟創建Pod庫還只能供自己使用,下面會繼續講解如何將其提交到CocoaPods/Specs代碼庫中,讓其他人也可以通過pod install安裝我們的開源庫。

CocoaPods Trunk發布自己的Pods

在cocoapods使用了trunk之後,CocoaPods 需要0.33以上版本,用 pod --version查看版本,如果版本低,需要更新。

注冊Trunk

$ pod trunk register [email protected] 'Orta Therox' --description='macbook air'

大家在注冊時需要替換成自己的郵箱和用戶名,一切順利的話就會受到一份郵件,點擊郵件中的鏈接後驗證一下:

pod trunk me

1351863-641b06a41444a0dc.png

當然,如果你的pod是由多人維護的,你也可以添加其他維護者:

$ pod trunk add-owner ARAnalytics [email protected]

上面的工作完成之後,我們就可以開始 trunk push了。

Trunk push

pod trunk push 命令會首先驗證你本地的podspec文件(是否有錯誤),之後會上傳spec文件到trunk,最後會將你上傳的podspec文件轉換為需要的json文件。在工程根目錄(包含有.podspec)下執行命令:

pod trunk push

如果在trunk push過程中報錯了,仔細查看一下錯誤信息。我當初就是使用了podspec文件中描述的版本所沒有的API,之後修改podspec文件中s.platform = :ios, "7.0"就可以了。

1351863-70f2bc73825180bd.png

如果你能看的上面的結果說明上傳成功了。我們也可以在本地的~/.cocoapods/repos/master/Specs目錄下看到轉換之後的json文件,

1351863-9f93e6c957de080f.png

至此我們整個制作自己的開源庫的過程就完成了,以後有新版本只需要修改工程根目錄下的podspec文件就行了,然後重新執行pod trunk push命令。

最後

最後對這個過程做個總結:

1.開源庫發布之後,需要打上tag

2.進入到項目根目錄下,創建podspec文件

pod spec create PodName

3.編輯podspec文件中的相關信息,有兩個比較重要的地方s.source和s.source_files,可以驗證是否有誤:

pod spec lint PodName.podspec

4.注冊pod trunk

$ pod trunk register [email protected] 'Orta Therox' --description='macbook air'

5.發布到pod trunk

pod trunk push [NAME.podspec]

該命令在包含有.podspec文件的目錄下執行

6.更新pod庫

pod setup

如果pod trunk push成功後無法pod search到自己的庫,可執行該命令。

最後的最後

哈哈。好吧,我承認其實我是來打廣告的。例子中的HUPhotoBrowser是我開源的一個圖片浏覽器的庫,使用起來非常簡單,一行代碼就以實現圖片浏覽功能,支持本地和網絡圖片。希望大家可以支持一下,歡迎大家star。如果有什麼問題的話可以直接issue我。最後,希望能跟大家共同進步。項目地址:HUPhotoBrowser

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved