如何在CocoaPods中添加自定義的庫

CocoaPods命令介紹



上一篇文章ios

中,已經介紹過CocoaPods的幾條基本命令。

pod setupgit

用於初始化本地第三方庫的Spec描述文件,全部的spec文件存都存放在

~/.cocoapodsgithub

目錄中。

pod install正則表達式

用來安裝或刪除Podfile文件聲明中的第三方依賴庫。下面繼續介紹其它一些命令。
  1. $ pod list
  2. # 列出全部可用的第三方庫
複製代碼
  1. $ pod search query
複製代碼
搜索名稱包含 query的類庫, query能夠替換爲你想搜索的名字(如json),不區分大小寫。也可使用 pod search --full query命令做更仔細的搜索,該命令不但搜索類庫的名稱,同時還搜索類庫的描述文本,因此搜索速度也相對慢一些。 

pod listpod search命令只搜索存在於本地 ~/.cocoapods文件夾的全部第三方庫,並不會鏈接到遠程服務器。若是你要從服務器更新本地第三方庫的描述文件,能夠:
  1. $ pod repo update master
  2. 建立本身項目的Podspec描述文件
複製代碼
CocoaPods仍是一個相對年輕的項目,全部的項目的Podspec文件都託管在 。可能有一些庫並未收錄其中。下面咱們經過爲微博sso認證登陸庫編寫Podspec文件來學習相關的概念。 

初始化一個Podspec文件
  1. $ pod spec create weibo_ios_sdk_sso-oauth
複製代碼
該命令將在本目錄產生一個名爲 weibo_ios_sdk_sso-oauth.podspec的文件。用編輯器打開該文件,裏面已經有很是豐富的說明文檔。下面咱們介紹如何聲明第三方庫的代碼目錄和資源目錄,還有該第三方庫所依賴ios核心框架和第三方庫。 

去除全部的註釋,podspec文件以下所示:
  1. Pod::Spec.new do |s|
  2. s.name = 'ADVProgressBar'
  3. s.version = '0.0.1'
  4. s.license = 'MIT'
  5. s.summary = 'Progress Bar Design with Percentage values.'
  6. s.homepage = 'https://github.com/appdesignvault'
  7. s.author = { 'appdesignvault' => 'appdesignvault' }
  8. s.source = { :git => 'https://github.com/appdesignvault/ADVProgressBar.git', :commit => 'f17b15c15574d6d101cd5fcfd58239e16e806647' }
  9. s.platform = :ios 
  10. s.source_files = 'ADVProgressBar/Classes/*.{h,m}'
  11. s.resources = "ADVProgressBar/Resources/*.png"
  12. s.framework = 'UIKit'

  13. s.requires_arc = true 
  14. end
複製代碼
其中 s.names.summary用來聲明庫的名稱和一個簡短的說明文檔。 pod search命令就是根據這兩項內容做爲搜索文本的。 s.homepage聲明庫的主頁, s.version庫原代碼的版本, s.license所採用的受權版本, s.author庫的做者。 

s.source 聲明原代碼的地址,以微博sso認證登陸庫爲例,它託管在
  1. https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth
複製代碼
中,在其未尾加上 .git擴展名就是庫的原代碼地址了,因此該行應聲明爲:
  1. s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git'}
複製代碼
對於不少第三方庫而言,在發佈的時候都會打上一個 tag,如版本 0.0.1就會打上一個名爲v0.0.1的tag,可是 weibo_ios_sdk_sso-oauth庫還未打上所何tag,咱們能夠選擇一個最新的commit來做爲該庫0.0.1版的代碼。 s.source最終以下:
  1. s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git', :commit => '68defea78942ecc782ffde8f8ffa747872af226d'}
複製代碼
之後咱們能夠根據該庫不一樣的版本建立相應的podspec文件,例如0.0.2,0.1.0等。 

讓咱們在瀏覽器中看一下weibo_ios_sdk_sso-oauth的目錄結構:
  1. --
  2. |
  3. +-- demo
  4. |
  5. +-- src
  6. |
  7. +-- .gitignore
  8. |
  9. +-- README.md
複製代碼
demo目錄保存一個示例項目,src纔是庫的原代碼目錄。src的目錄結構以下:
  1. -- src
  2. |
  3. +-- JSONKit
  4. |
  5. +-- SinaWeibo
  6. |
  7. +-- sinaweibo_ios_sdk.xcodeproj
  8. |
  9. +-- SinaWeibo-Prefix.pch
複製代碼
JSONKit目錄說明這個庫自己依賴於JSONKit第三方庫。咱們能夠在podspec文件中的 s.dependency聲明段中聲明。SinaWeibo目錄纔是包含全部原代碼的目錄,咱們須要在 s.source_files中聲明
  1. s.source_files = 'src/SinaWeibo/*.{h,m}'
複製代碼
前一部分src/SinaWeibo/是一個相對目錄,目錄的層級關係必定要跟代碼庫的保持一致。最後一部分 *.{h,m}是一個相似正則表達式的字符串,表示匹配全部以.h和.m爲擴展名的文件。 

src/SinaWeibo/目錄下還有一個 SinaWeibo.bundle目錄,該目錄存放一些資源文件(如圖片等),這些文件並不須要進行編譯。可使用 s.resourcs聲明
  1. s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"
複製代碼
前一部分跟上面相同, **表示匹配全部子目錄, *.png表示全部以.png爲擴展名的圖片文件。 

經過查看代碼咱們知道,weibo_ios_sdk_sso-oauth還依賴一個ios的核心庫QuartzCore
  1. s.framework = 'QuartzCore'
複製代碼
在前面咱們已經說過,weibo_ios_sdk_sso-oauth庫自身也依賴於另一個第三方庫JSONKit,聲明以下:
  1. s.dependency 'JSONKit', '~> 1.4'
複製代碼
這行聲明與Podfile文件中的聲明相似。 

最終的結果以下:
  1. Pod::Spec.new do |s|
  2. s.name = "weibo_ios_sdk_sso-oauth"
  3. s.version = "0.0.1"
  4. s.summary = 'weibo.com sso oauth, 微博sso認證登陸功能'
  5. s.homepage = "https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth"
  6. s.license = 'MIT'
  7. s.author = {'mobileresearch' => 'mobileresearch'}
  8. s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git', :commit => '68defea78942ecc782ffde8f8ffa747872af226d' }
  9. s.platform = :ios
  10. s.source_files = 'src/SinaWeibo/*.{h,m}'
  11. s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"
  12. s.framework = 'QuartzCore'
  13. s.dependency 'JSONKit', '~> 1.4'
  14. end
複製代碼
能夠將該spec文件保存到本機的~/.cocoapods/master/目錄中僅供本身使用,也能夠將其提交到CocoaPods/Specs代碼庫中。下面咱們將其保存到本機中
  1. $ mkdir -p ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1
  2. $ cp weibo_ios_sdk_sso-oauth.podspec ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1
複製代碼
是否能夠經過搜索找到該庫:
  1. $ pod search weibo
複製代碼
一樣在須要依賴於weibo_ios_sdk_sso-oauth這個庫的項目,能夠將下列添加到項目的Podfile文件中
  1. pod 'weibo_ios_sdk_sso_oauth', '0.0.1'
複製代碼
保存文件,並用 pod install安裝weibo_ios_sdk_sso-oauth庫。 
相關文章
相關標籤/搜索