2018-11-13

iOS開發(fā) - CocoaPods的常見使用方式

https://www.cnblogs.com/hs-funky/p/6759977.html


1 CocoaPods?的安裝

1.1?作用:

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

1.2?理解:

1.2.1 什么是gem

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

1.2.2 常用命令

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

$ gem update --system(更新gem)

$ gem sources(查看數(shù)據(jù)源)

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

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

$ gem search 軟件包關(guān)鍵字(搜索軟件包)

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

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

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

注意: 以上命令最好在使用之前, 都添加sudo,代表以管理員身份運(yùn)行該命令,因?yàn)橛锌赡馨惭b軟件包的過程當(dāng)中, 需要創(chuàng)建文件等等, 必須有管理員權(quán)限才能操作

1.3?安裝:

$ sudo gem install cocoapods

執(zhí)行完這句如果報(bào)告以下錯誤:?

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??(查看當(dāng)前ruby的源)

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

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

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

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

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

然后重新執(zhí)行安裝下載命令?

$ sudo gem install cocoapods

驗(yàn)證成功:$ pod --version

接下來進(jìn)行安裝,執(zhí)行:?

$ pod setup

升級到10.11, CocoaPods報(bào)錯: command not found, 解決方案

$ sudo gem update --system

$ sudo gem uninstall cocoapods

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

隨后如果出現(xiàn)下列錯誤

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

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

原因:?Cocoapods的分支不支持當(dāng)前最新的Xcode版本

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

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

$?pod?setup


2 CocoaPods?的簡單使用

2.1?步驟

1>?Xcode新建一個項(xiàng)目,名字Test

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

3> 執(zhí)行命令?$ pod init?建立Podfile配置文件

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

5> 執(zhí)行?$ pod install?現(xiàn)在打開項(xiàng)目不是點(diǎn)擊 Test.xcodeproj了,而是點(diǎn)擊 Test.xcworkspace

2.2?說明

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

2.3 pod install 和 pod update 區(qū)別

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

update 不管Podfile.lock是否存在, 都會讀取Podfile文件的的框架信息去下載

主要區(qū)別在于, Podfile文件內(nèi)的框架信息, 版本描述沒有指定具體版本


3?上傳框架到CocoaPods

3.1 CocoaPods機(jī)制圖解

?

3.2?上傳框架到CocoaPods

1> 創(chuàng)建庫工程, 添加源文件到Classes文件夾,文件路徑 /test/Classes/Person.h?Person.m文件

2> 在遠(yuǎn)程github上創(chuàng)建倉庫用來存放此庫工程


3> 創(chuàng)建git并與遠(yuǎn)程倉庫進(jìn)行關(guān)聯(lián)

$ cd /Users/Funky/Desktop/test

$ git init(創(chuàng)建git)

$ git add .(添加到暫存區(qū))

$ git commit -m 'create Person Class’?(提交文件)

$ git remote add origin?https://github.com/funkyHS/testPerson.git?(關(guān)聯(lián)遠(yuǎn)程地址)

$ git push origin master?(提交推送到遠(yuǎn)程)

4> 創(chuàng)建倉庫的描述文件test.podspec

$ cd /Users/Funky/Desktop/test

$ pod spec create test(創(chuàng)建spec文件)

生成test.podspec 使用Xcode打開進(jìn)行編輯

$ git tag?(查看tag記錄)

$ git tag ‘0.0.1’?(要與test.podspec中的s.version保持一致)

$ git push --tags(提交推送到遠(yuǎn)程,成功后在遠(yuǎn)程release處可以看到提交的tag版本)

5>? 利用trunk將本地的spec文件上傳到pods官方的索引庫

$ pod trunk register 1824718008@qq.com 'funky'? --verbose?(注冊trunk)

成功后登陸上面的郵箱去激活 郵件中的地址

$ pod trunk push test.podspec

6> 測試,使用pod search 命令搜索自己的框架, 如果可以搜索到, 那么代表審核通過了


4 ?CocoaPods本地私有庫的使用

需求說明:testProject工程利用pods管理導(dǎo)入使用本地庫文件

4.1 步驟:

$ cd /Users/Funky/Desktop/localLib/test

$ git init

$ git add .

$ git commit -m 'create file’

$ pod spec create test

編輯test.podspec文件

$ cd /Users/Funky/Desktop/testProject

$ pod init(生成Podfile文件)

編輯Podfile文件

$ pod install?(會驗(yàn)證test.podspec 填寫信息是否正確)

成功后打開testProject.xcworkspace項(xiàng)目,庫文件在Pods/Development Pods中


5?創(chuàng)建pods庫的模版庫

(組件化快速生成測試工程常用)

工程文件目錄結(jié)構(gòu):/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)

需求:在MyTestProject文件夾下,快速創(chuàng)建關(guān)于Categories/(.h .m)的測試工程

5.1 步驟:

1> $ cd /Users/Funky/Desktop/MyTestProject

2> $ pod lib create testProjectQuick

3> 用測試的庫文件替換ReplaceMe.m文件

---------------------------------------------

4>?$ cd /Users/Funky/Desktop/MyTestProject/testProjectQuick/Example

$ pod install


6 CocoaPods遠(yuǎn)程私有庫的使用

6.1?機(jī)制圖解

?

6.2?具體操作步驟

1> 查看本地索引庫

$ pod repo

master

- Type: git (master)

- URL:? https://github.com/CocoaPods/Specs.git

-?Path: /Users/Funky/.cocoapods/repos/master

2> 在代碼托管平臺上添加公鑰

$ ssh-keygen(生成公鑰)

Enter file in which to save the key (/Users/Funky/.ssh/id_rsa): (直接回車)

Enter passphrase (empty for no passphrase): (直接回車)

Enter same passphrase again: (直接回車)

生成的公鑰所在路徑 ~/.ssh/id_rsa.pub (用Xcode打開并復(fù)制)

在coding上添加公鑰

3> 添加本地私有的索引庫

$ pod repo add TestProjectBase?git@git.coding.net:funkyHS/TestProjectSpecs.git

此時在~/.cocoapods/repos 路徑下 可以看到TestProjectBase文件夾

4> 查看?$ pod repo

master

- Type: git (master)

- URL:? https://github.com/CocoaPods/Specs.git

- Path: /Users/Funky/.cocoapods/repos/master

TestProjectBase

- Type: git (master)

- URL:? git@git.coding.net:funkyHS/TestProjectSpecs.git

- Path: /Users/Funky/.cocoapods/repos/TestProjectBase

5> 然后在代碼托管平臺上(coding)創(chuàng)建一個TestProjectBase項(xiàng)目,用來存放基礎(chǔ)組件的遠(yuǎn)程代碼倉庫

$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/testProjectQuick?(進(jìn)入到基礎(chǔ)組件的模版工程)

$ git status

$ git add .

$ git commit -m ‘模版測試工程'

6> 接著 修改編輯testProjectQuick 模版例子工程的testProjectQuick.podspec文件

$ pod lib lint?(驗(yàn)證當(dāng)前文件夾下的testProjectQuick.podspec文件編輯是否正確)

$ pod spec lint?(驗(yàn)證遠(yuǎn)程的是否正確,此時會報(bào)tag ERROR)

$ git status

$ git add .

$ git commit -m '編輯spec文件'

$ git remote add origin?https://git.coding.net/funkyHS/TestProjectBase.git?(將本地庫與遠(yuǎn)程代碼倉庫進(jìn)行關(guān)聯(lián))

$ git push origin master?(提交到遠(yuǎn)程倉庫)

$ git tag ‘0.1.0'

$ git push --tags?(將標(biāo)簽提交到遠(yuǎn)程)

$ pod spec lint?(再次驗(yàn)證)

testProjectQuick.podspec passed validation.


$ pod repo push TestProjectBase testProjectQuick.podspec?(將podspec文件提交到本地的私有索引庫TestProjectBase中: 地址 ~/.cocoapods/repos/TestProjectBase)

注意:提交后,依然會驗(yàn)證 podspec文件,驗(yàn)證通過后 會自動上傳到在coding上的遠(yuǎn)程spec索引庫

$ pod search testProjectQuick

-> testProjectQuick (0.1.0)

?? testProjectQuick簡介

?? pod 'testProjectQuick', '~> 0.1.0'

?? - Homepage: https://coding.net/u/funkyHS/p/TestProjectBase

?? - Source: ? https://git.coding.net/funkyHS/TestProjectBase.git

?? - Versions: 0.1.0 [TestProjectBase repo]

此時在進(jìn)入主工程中修改podfile文件

$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/MyMainProject?

$ pod install

大功告成,打開MyMainProject.xcworkspace,此時在pod中可以找到遠(yuǎn)程私有庫的代碼!是不是很開心,很興奮!


如果對于如何創(chuàng)建遠(yuǎn)程私有庫還有不明白的地方,去看我的下一篇詳細(xì)介紹的文章《iOS開發(fā) - CocoaPods遠(yuǎn)程私有庫從0到1

這篇文章對你有所幫助的話,請?jiān)谖业脑u論區(qū)坐一坐吧!

有不理解或者發(fā)現(xiàn)博主存在理解操作不正確的地方,歡迎評論,我會及時修正,以免誤人子弟!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容