用來安裝或刪除Podfile文件聲明中的第三方依賴庫。下面繼續介紹其它一些命令。
搜索名稱包含
query的類庫,
query能夠替換爲你想搜索的名字(如json),不區分大小寫。也可使用
pod search --full query命令做更仔細的搜索,該命令不但搜索類庫的名稱,同時還搜索類庫的描述文本,因此搜索速度也相對慢一些。
pod list和
pod search命令只搜索存在於本地
~/.cocoapods文件夾的全部第三方庫,並不會鏈接到遠程服務器。若是你要從服務器更新本地第三方庫的描述文件,能夠:
- $ pod repo update master
- 建立本身項目的Podspec描述文件
複製代碼
CocoaPods仍是一個相對年輕的項目,全部的項目的Podspec文件都託管在
。可能有一些庫並未收錄其中。下面咱們經過爲微博sso認證登陸庫編寫Podspec文件來學習相關的概念。
初始化一個Podspec文件
- $ pod spec create weibo_ios_sdk_sso-oauth
複製代碼
該命令將在本目錄產生一個名爲
weibo_ios_sdk_sso-oauth.podspec的文件。用編輯器打開該文件,裏面已經有很是豐富的說明文檔。下面咱們介紹如何聲明第三方庫的代碼目錄和資源目錄,還有該第三方庫所依賴ios核心框架和第三方庫。
去除全部的註釋,podspec文件以下所示:
- Pod::Spec.new do |s|
- s.name = 'ADVProgressBar'
- s.version = '0.0.1'
- s.license = 'MIT'
- s.summary = 'Progress Bar Design with Percentage values.'
- s.homepage = 'https://github.com/appdesignvault'
- s.author = { 'appdesignvault' => 'appdesignvault' }
- s.source = { :git => 'https://github.com/appdesignvault/ADVProgressBar.git', :commit => 'f17b15c15574d6d101cd5fcfd58239e16e806647' }
- s.platform = :ios
- s.source_files = 'ADVProgressBar/Classes/*.{h,m}'
- s.resources = "ADVProgressBar/Resources/*.png"
- s.framework = 'UIKit'
- s.requires_arc = true
- end
複製代碼
其中
s.name和
s.summary用來聲明庫的名稱和一個簡短的說明文檔。
pod search命令就是根據這兩項內容做爲搜索文本的。
s.homepage聲明庫的主頁,
s.version庫原代碼的版本,
s.license所採用的受權版本,
s.author庫的做者。
s.source 聲明原代碼的地址,以微博sso認證登陸庫爲例,它託管在
- https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth
複製代碼
中,在其未尾加上
.git擴展名就是庫的原代碼地址了,因此該行應聲明爲:
- 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最終以下:
- 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的目錄結構:
- --
- |
- +-- demo
- |
- +-- src
- |
- +-- .gitignore
- |
- +-- README.md
複製代碼
demo目錄保存一個示例項目,src纔是庫的原代碼目錄。src的目錄結構以下:
- -- src
- |
- +-- JSONKit
- |
- +-- SinaWeibo
- |
- +-- sinaweibo_ios_sdk.xcodeproj
- |
- +-- SinaWeibo-Prefix.pch
複製代碼
JSONKit目錄說明這個庫自己依賴於JSONKit第三方庫。咱們能夠在podspec文件中的
s.dependency聲明段中聲明。SinaWeibo目錄纔是包含全部原代碼的目錄,咱們須要在
s.source_files中聲明
- s.source_files = 'src/SinaWeibo/*.{h,m}'
複製代碼
前一部分src/SinaWeibo/是一個相對目錄,目錄的層級關係必定要跟代碼庫的保持一致。最後一部分
*.{h,m}是一個相似正則表達式的字符串,表示匹配全部以.h和.m爲擴展名的文件。
src/SinaWeibo/目錄下還有一個
SinaWeibo.bundle目錄,該目錄存放一些資源文件(如圖片等),這些文件並不須要進行編譯。可使用
s.resourcs聲明
- s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"
複製代碼
前一部分跟上面相同,
**表示匹配全部子目錄,
*.png表示全部以.png爲擴展名的圖片文件。
經過查看代碼咱們知道,weibo_ios_sdk_sso-oauth還依賴一個ios的核心庫QuartzCore
- s.framework = 'QuartzCore'
複製代碼
在前面咱們已經說過,weibo_ios_sdk_sso-oauth庫自身也依賴於另一個第三方庫JSONKit,聲明以下:
- s.dependency 'JSONKit', '~> 1.4'
複製代碼
這行聲明與Podfile文件中的聲明相似。
最終的結果以下:
- Pod::Spec.new do |s|
- s.name = "weibo_ios_sdk_sso-oauth"
- s.version = "0.0.1"
- s.summary = 'weibo.com sso oauth, 微博sso認證登陸功能'
- s.homepage = "https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth"
- s.license = 'MIT'
- s.author = {'mobileresearch' => 'mobileresearch'}
- s.source = { :git => 'https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth.git', :commit => '68defea78942ecc782ffde8f8ffa747872af226d' }
- s.platform = :ios
- s.source_files = 'src/SinaWeibo/*.{h,m}'
- s.resources = "src/SinaWeibo/SinaWeibo.bundle/**/*.png"
- s.framework = 'QuartzCore'
- s.dependency 'JSONKit', '~> 1.4'
- end
複製代碼
能夠將該spec文件保存到本機的~/.cocoapods/master/目錄中僅供本身使用,也能夠將其提交到CocoaPods/Specs代碼庫中。下面咱們將其保存到本機中
- $ mkdir -p ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1
- $ cp weibo_ios_sdk_sso-oauth.podspec ~/.cocoapods/master/weibo_ios_sdk_sso-oauth/0.0.1
複製代碼
是否能夠經過搜索找到該庫:
一樣在須要依賴於weibo_ios_sdk_sso-oauth這個庫的項目,能夠將下列添加到項目的Podfile文件中
- pod 'weibo_ios_sdk_sso_oauth', '0.0.1'
複製代碼
保存文件,並用
pod install安裝weibo_ios_sdk_sso-oauth庫。