CocoaPods公有庫、遠程私有庫、本地私有庫的使用整理

1.CocoaPods?的安裝

<已經了解CocoaPods的同學請直接跳到第3步或第4步>

1.1?作用:

幫助管理和維護第三方框架,快速的搜索到第三方框架, 然后自動集成到工程里面來, 并編譯成一個libPod.a的靜態庫給我們項目用.

1.2?理解:

1.2.1 什么是gem

????????Gem是一個管理Ruby庫和程序的標準包,它通過Ruby Gem(如 http://rubygems.org/ )源來查找、安裝、升級和卸載軟件包,非常的便捷。

1.2.2 常用命令

????????$ gem --version?(查看gem版本)

????????$ gem update --system(更新gem)

????????$ gem sources(查看數據源)

????????$ gem sources --remove?https://rubygems.org/(刪除數據源)

????????$ gem sources -a?https://ruby.taobao.org/(添加數據源)

????????$ gem search 軟件包關鍵字(搜索軟件包)

????????$ gem install 軟件包名稱(安裝軟件包)

????????$ gem install cocoapods --pre(安裝上一個版本軟件包)

????????$ gem uninstall?軟件包名稱(卸載安裝包)

????????注意: 以上命令最好在使用之前, 都添加sudo,代表以管理員身份運行該命令,因為有可能安裝軟件包的過程當中, 需要創建文件等等, 必須有管理員權限才能操作。

1.3?安裝:

$ sudo gem install cocoapods

執行完這句如果報告以下錯誤:?

????????ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why: Unable to download ????????data from?https://rubygems.org/?- Errno::ETIMEDOUT: Operation timed out connect(2) (https://rubygems.org/latest_specs.4.8.gz)

????????ERROR: Possible alternatives: cocoapods?

則需要更新一下ruby的源:?

????????$ gem sources??(查看當前ruby的源)

????????$ gem sources --remove?https://rubygems.org/?(刪除數據源)

????????$ gem source -a?https://gems.ruby-china.com/ ? ?//最新

如果gem太老,可以嘗試用如下命令升級gem:?

????????$ sudo gem update --system(注解: sudo 是以超級管理員的身份操作)

????????升級成功后會提示: RubyGems system software updated?

然后重新執行安裝下載命令?

????????$ sudo gem install cocoapods

可能會報錯,出現以下問題:ERROR:? While executing gem ... (Gem::FilePermissionError)

? ? You don't have write permissions for the /usr/bin directory.

建議使用下面的方法進行安裝:

????????$?sudo gem install -n /usr/local/bin cocoapods --pre //最新版本

? ? ? ? 或著 sudo gem install -n /usr/local/bin cocoapods -v (版本號) //指定安裝 cocoapods的版本

????????驗證成功:$ pod --version

????????接下來進行安裝,執行:?

????????$ pod setup

升級到10.11, CocoaPods報錯: command not found, 解決方案:

????????$ sudo gem update --system

????????$ sudo gem uninstall cocoapods

????????$ sudo gem install -n /usr/local/bin cocoapods

????????隨后如果出現下列錯誤

????????[!]?An?error?occurred?while?performing?`Git?pull`?on?repo?`master`.

????????[!]?/usr/bin/git?pull?--ff-only

????????原因:?Cocoapods的分支不支持當前最新的Xcode版本

????????解決辦法:?刪除master分支?重新建立新的分支

????????$ sudo?rm?-fr?~/.cocoapods/repos/master

????????$?pod?setup




2.CocoaPods?的簡單使用

2.1?步驟

????1>?Xcode新建一個項目,名字Test

????2> 終端中,cd到項目總目錄(注意:包含Test.xcodeproj的那個目錄)

????3> 執行命令?$ pod init 或者 $ vim Podfile?建立Podfile配置文件

????4> 打開podfile文件,不要選擇文本編輯打開方式,選擇Xcode打開,編輯文件如下

? ?5> 執行?$ pod install?現在打開項目不是點擊 Test.xcodeproj了,而是點擊 Test.xcworkspace

2.2?說明

????????生成的重要文件Podfile.lock 用來記錄著上一次下載的框架版本

2.3 pod install 和 pod update 區別

? ??????install? 如果Podfile.lock文件存在, 直接從此文件中讀取框架信息下載安裝,如果不存在, 依然會讀取Podfile文件內的框架信息。

? ??????update 不管Podfile.lock是否存在, 都會讀取Podfile文件的的框架信息去下載。主要區別在于, Podfile文件內的框架信息, 版本描述沒有指定具體版本。




3.創建CocoaPods遠程公有庫

3.1 注冊CocoaPods賬戶信息

????????想要創建一個開源pod庫, 首先我們需要注冊CocoaPods, 這里使用trunk方式, 作為一個iOS開發人員你一定安裝了CocoaPods, 那么只需要在終端執行:

$ pod trunk register 郵箱地址?'用戶名' --verbose

????????這里我們一般使用github郵箱和用戶名, 然后在你的郵箱中會收到確認郵件, 在瀏覽器中點擊鏈接確認即注冊成功, 成功之后可以終端執行:????

$?pod trunk me

????????查看自己的注冊信息, 以后當你有了自己的開源Pod庫, 也可以用此方式隨時查看自己發布過的Pods。

3.2?創建共享庫文件并上傳到公有倉庫

共享庫需要三個必不可少的部分:

A.?共享文件夾?(文件夾存放著你要共享的內容, 也就是其他人pod得到的文件, .podspec文件中的source_files需要指定此文件路徑及文件類型);

B.?LICENSE文件?(開源許可證,默認一般選擇MIT);

C.?庫描述文件.podspec?(本庫的各項信息描述, 需要提交給CocoaPods, pod通過這個文件查找到你共享的庫)。

這一步分兩種情況:

A.如果你已經有了現成的想要共享的文件,你只需要滿足上面三個部分,即可上傳到公有倉庫即可繼續其他的步驟;

B.你想要創建一個全新的工程去做自己的共享, 可以先從遠端clone一個新項目,使用終端命令:

$ pod lib create 庫名

然后根據需要選擇各項配置后創建一個標準的工程,將代碼上傳到公有倉庫。

3.3 創建并編輯.podspec文件

.podspec?是用 Ruby 的配置文件,描述你項目的信息。

在你的倉庫目錄下,使用終端命令創建: ?

$?pod spec create 文件名稱

修改podspec文件內容:

Pod::Spec.new do |s|

? s.name? ? ? ? ? ? = 'JFPhoneNumTFLib'

? s.version? ? ? ? ? = '0.1.1'

? s.summary? ? ? ? ? = 'JFPhoneNumTFLib.'

? s.homepage? ? ? ? = 'https://github.com/MichealFan/JFPhoneNumTFLib'

? s.license? ? ? ? ? = { :type => 'MIT', :file => 'LICENSE' }

? s.author? ? ? ? ? = { 'lannikeng' => 'lannikeng@163.com' }

? s.source? ? ? ? ? = { :git => 'https://github.com/MichealFan/JFPhoneNumTFLib.git', :tag => s.version.to_s }

? s.ios.deployment_target = '8.0'

? s.source_files = 'JFPhoneNumTFLib/Classes/**/*'

? # s.resource_bundles = {

? #? 'JFPhoneNumTFLib' => ['JFPhoneNumTFLib/Assets/*.png']

? # }

? # s.public_header_files = 'Pod/Classes/**/*.h'

? s.frameworks = 'UIKit', 'Foundation'

? # s.dependency 'AFNetworking', '~> 2.3'

end

? ? ? ? ? ?值得注意的是:podspec文件中的homepage和source不支持ssh協議地址,所以我們得放入http/https地址。

? ? ? ? ? ?編寫完成后, 我們需要驗證.podspec文件的合法性, 這里需要終端cd到.podspec文件所在文件夾, 執行:

$ pod lib lint JFPhoneNumTFLib.podspec

? ? ? ? 如果遇到警告的話,我們需要加上在后面?--allow-warnings

? ??????如有其他錯誤請重新檢查你的編寫正確性, 如果沒有問題會出現:

-> JFPhoneNumTFLib (0.1.1)

JFPhoneNumTFLib passed validation.

3.4?給倉庫打tag標簽, 發布一個release版本

????????驗證成功后,將倉庫提交到遠程,然后給倉庫打上標簽并將標簽也推送到遠程。

????????標簽相當于將你的倉庫的一個壓縮包,用于穩定存儲當前版本。標簽號與你在.podspec文件中?s.version = "0.1.1"的版本號一致。這里你可以在你的git倉庫中的releases一項去手動發布, 也可以在當前文件夾下使用終端命令:

$?git tag -m 'first release' '0.1.1'

$ git push --tag #推送tag到遠端倉庫

3.5?發布自己的庫描述文件podspec給cocoapods

????????發布項目的描述的文件 JFPhoneNumTF.podspec

????????同樣在這個文件夾下, 終端執行:

$?pod trunk push JFPhoneNumTF.podspec

將你的.podspec發布到公有的specs上,這一步其實做了很多操作,包括

????????1> 更新本地 pods 庫~/.cocoaPods.repo/master

????????2> 驗證.podspec格式是否正確

????????3> 將.podspec文件轉成 JSON 格式

????????4> 對master倉庫 進行合并、提交.master倉庫地址

成功后將會出現下列信息:

Updating spec repo`master`

Validating podspec -> JFPhoneNumTF (0.1.1)

Updating spec repo`master`?

3.6?使用倉庫

發布到Cocoapods后,在終端更新本地pods倉庫信息

$ pod setup

查詢倉庫

$ pod search JFPhoneNumTF

若出現倉庫信息說明已經成功了,這時候你就可以在?Podfile?添加、使用自己的倉庫了?pod 'JFPhoneNumTF', '~> 0.1.1'

3.7?更新維護

當你的代碼更新維護后,就需要重寫發布,流程是:

1> 更新JFPhoneNumTF.podspec中的版本號

2> 打上tag標簽推送遠程

3> pod trunk push JFPhoneNumTF.podspec?推送到pods倉庫




4.創建CocoaPods遠程私有庫

4.1?創建添加版本庫(repo),遠程索引庫

? ? ? ? 首先,創建一個像?master?一樣的存放版本描述文件的git倉庫,因為是私人git倉庫,我們選擇?oschina?創建遠程私有倉庫(因為是免費的)或者也可以在GitHub上創建($7/month)

????????創建版本描述倉庫后,回到終端,將這個遠程的私有版本倉庫添加到本地,repo?就是 repository 儲存庫的縮寫。

$ pod repo add MySpecRepo https://git.oschina.net/JMicheal/MySpecRepo.git

????????查看在 Finder 目錄?~/.cocoapods/repos, 可以發現增加了一個 MySpecRepo 的儲存庫。

4.2?創建代碼庫

????????回到?oschina?創建私人代碼庫,創建時添加?MIT License?和?README。

????????將倉庫克隆到本地,添加你的代碼文件、倉庫名.podspec?描述文件,還有.swift-version。

????????.swift-version文件用來知道swift版本,用命令行創建:

????????$ echo "3.0" > .swift-version```

????????這里我要說一下一個坑,用?oschina?創建私人倉庫時, 在驗證時可能會找不到?MIT LICENSE證書,將其中的

????????s.license = "MIT"

修改為,指定文件

????????s.license? ? ? = { :type => "MIT", :file => "LICENSE" } ? ? ??

????????驗證podspec文件

????????$ pod lib lint?驗證本地連接

????????$ pod spec lint?驗證遠程連接

????????與公有庫的創建方式一樣,?驗證成功之后push到倉庫, 然后打tag發布release版本。一般出現錯誤警告,需要添加?--private?或者?--allow-warnings,就可以通過驗證。

4.3?將描述文件podspec推送到私有Sepc repo版本庫中

????????公有庫使用trunk方式將.podspec文件發布到CocoaPods/Specs, 內部的pod組件庫則是添加到我們第一步創建的私有Spec repo中去, 在終端執行:

$ pod repo push MySpecRepo xxxx.podspec

????????這時會對遠程倉庫進行驗證,成功的話就會在?~/.cocoapods/repos/MySpecRepo?中發現新增的倉庫描述信息了。過程為以下幾步:

????????1> 驗證?xxxx.podspec?文件

????????2> 拉取遠程版本庫?MySpecRepo

????????3> 添加?xxxx.podspec?到版本庫中

????????4> push 到遠程

若是出現錯誤信息:

[!] The repo `MySpecRepo` at `../.cocoapods/repos/MySpecRepo` is not clean

更新下我們的版本庫,

$ pod repo update MySpecRepo

再繼續上傳即可。

添加完成后我們就可以在pod中搜索 $ pod search xxxx

4.4?私人pod庫的使用

使用私人pod庫的需要在Podflie中添加這句話,指明你的版本庫地址。

source ‘https://git.oschina.net/JMicheal/MySpecRepo.git’

**注意**是版本庫的地址,而不是代碼庫的地址

若有還使用了公有的pod庫,需要把公有庫地址也帶上

source ‘https://github.com/CocoaPods/Specs.git’

執行 $ pod install 可以看到代碼已經整合到我們的項目中了。



5 創建CocoaPods本地私有庫

5.1?創建本地庫

5.2?創建podSpec文件

podspec文件其余都與前兩種情況類似,僅僅是把本地庫的source鏈接地址可以去掉,改為:

s.source = { :git => "", :tag => "#{s.version}" }

5.3?驗證podspec文件

5.4?創建測試工程,并創建Podfile文件,進行安裝本地庫

path指向本地文件的相對路徑即可:

pod 'xxxx',:path => '../Lib/xxxx'

執行 $ pod install 安裝。

這篇文章講的也很簡潔全面-->

其他相關文章:

Cocoapods私有庫可能遇到的坑-->

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容