https://www.cnblogs.com/hs-funky/p/6759977.html
1 CocoaPods?的安裝
1.1?作用:
幫助管理和維護(hù)第三方框架,快速的搜索到第三方框架, 然后自動(dòng)集成到工程里面來, 并編譯成一個(gè)libPod.a的靜態(tài)庫給我們項(xiàng)目用
1.2?理解:
1.2.1 什么是gem
Gem是一個(gè)管理Ruby庫和程序的標(biāo)準(zhǔn)包腾仅,它通過Ruby Gem(如 http://rubygems.org/ )源來查找疼鸟、安裝肠缔、升級(jí)和卸載軟件包意述,非常的便捷规伐。
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(安裝上一個(gè)版本軟件包)
$ gem uninstall?軟件包名稱(卸載安裝包)
注意: 以上命令最好在使用之前, 都添加sudo,代表以管理員身份運(yùn)行該命令,因?yàn)橛锌赡馨惭b軟件包的過程當(dāng)中, 需要?jiǎng)?chuàng)建文件等等, 必須有管理員權(quán)限才能操作
1.3?安裝:
$ sudo gem install cocoapods
執(zhí)行完這句如果報(bào)告以下錯(cuò)誤:?
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太老做盅,可以嘗試用如下命令升級(jí)gem?
$ sudo gem update --system(注解: sudo 是以超級(jí)管理員的身份操作)
升級(jí)成功后會(huì)提示: RubyGems system software updated?
然后重新執(zhí)行安裝下載命令?
$ sudo gem install cocoapods
驗(yàn)證成功:$ pod --version
接下來進(jìn)行安裝乖杠,執(zhí)行:?
$ pod setup
升級(jí)到10.11, CocoaPods報(bào)錯(cuò): command not found, 解決方案
$ sudo gem update --system
$ sudo gem uninstall cocoapods
$ sudo gem install -n /usr/local/bin cocoapods
隨后如果出現(xiàn)下列錯(cuò)誤
[!]?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?的簡(jiǎn)單使用
2.1?步驟
1>?Xcode新建一個(gè)項(xiàng)目分扎,名字Test
2> 終端中,cd到項(xiàng)目總目錄(注意:包含Test.xcodeproj的那個(gè)目錄)
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文件存在, 直接從此文件中讀取框架信息下載安裝,如果不存在, 依然會(huì)讀取Podfile文件內(nèi)的框架信息
update 不管Podfile.lock是否存在, 都會(huì)讀取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?(注冊(cè)trunk)
成功后登陸上面的郵箱去激活 郵件中的地址
$ pod trunk push test.podspec
6> 測(cè)試,使用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?(會(huì)驗(yàn)證test.podspec 填寫信息是否正確)
成功后打開testProject.xcworkspace項(xiàng)目,庫文件在Pods/Development Pods中
5?創(chuàng)建pods庫的模版庫
(組件化快速生成測(cè)試工程常用)
工程文件目錄結(jié)構(gòu):/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)
需求:在MyTestProject文件夾下列赎,快速創(chuàng)建關(guān)于Categories/(.h .m)的測(cè)試工程
5.1 步驟:
1> $ cd /Users/Funky/Desktop/MyTestProject
2> $ pod lib create testProjectQuick
3> 用測(cè)試的庫文件替換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> 在代碼托管平臺(tái)上添加公鑰
$ 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
此時(shí)在~/.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> 然后在代碼托管平臺(tái)上(coding)創(chuàng)建一個(gè)TestProjectBase項(xiàng)目宏悦,用來存放基礎(chǔ)組件的遠(yuǎn)程代碼倉庫
$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/testProjectQuick?(進(jìn)入到基礎(chǔ)組件的模版工程)
$ git status
$ git add .
$ git commit -m ‘模版測(cè)試工程'
6> 接著 修改編輯testProjectQuick 模版例子工程的testProjectQuick.podspec文件
$ pod lib lint?(驗(yàn)證當(dāng)前文件夾下的testProjectQuick.podspec文件編輯是否正確)
$ pod spec lint?(驗(yàn)證遠(yuǎn)程的是否正確,此時(shí)會(huì)報(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)
注意:提交后粥谬,依然會(huì)驗(yàn)證 podspec文件肛根,驗(yàn)證通過后 會(huì)自動(dòng)上傳到在coding上的遠(yuǎn)程spec索引庫
$ pod search testProjectQuick
-> testProjectQuick (0.1.0)
?? testProjectQuick簡(jiǎn)介
?? 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]
此時(shí)在進(jìn)入主工程中修改podfile文件
$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/MyMainProject?
$ pod install
大功告成,打開MyMainProject.xcworkspace漏策,此時(shí)在pod中可以找到遠(yuǎn)程私有庫的代碼部凑!是不是很開心帮碰,很興奮雕沉!
如果對(duì)于如何創(chuàng)建遠(yuǎn)程私有庫還有不明白的地方蛔钙,去看我的下一篇詳細(xì)介紹的文章《iOS開發(fā) - CocoaPods遠(yuǎn)程私有庫從0到1》
這篇文章對(duì)你有所幫助的話,請(qǐng)?jiān)谖业脑u(píng)論區(qū)坐一坐吧感耙!
有不理解或者發(fā)現(xiàn)博主存在理解操作不正確的地方褂乍,歡迎評(píng)論,我會(huì)及時(shí)修正即硼,以免誤人子弟逃片!