1 CocoaPods 的安裝
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 sources -a https://ruby.taobao.org/ (添加數據源)
- 如果gem太老,可以嘗試用如下命令升級gem
$ sudo gem update --system(注解: sudo 是以超級管理員的身份操作)
升級成功后會提示: RubyGems system software updated
然后重新執行安裝下載命令
$ sudo gem install 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 建立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機制圖解
3.2 上傳框架到CocoaPods
1> 創建庫工程, 添加源文件到Classes文件夾,文件路徑 /test/Classes/Person.h Person.m文件
2> 在遠程github上創建倉庫用來存放此庫工程
3> 創建git並與遠程倉庫進行關聯
$ cd /Users/Funky/Desktop/test
$ git init(創建git)
$ git add .(添加到暫存區)
$ git commit -m 'create Person Class’ (提交文件)
$ git remote add origin https://github.com/funkyHS/testPerson.git (關聯遠程地址)
$ git push origin master (提交推送到遠程)
4> 創建倉庫的描述文件test.podspec
$ cd /Users/Funky/Desktop/test
$ pod spec create test(創建spec文件)
生成test.podspec 使用Xcode打開進行編輯
$ git tag (查看tag記錄)
$ git tag ‘0.0.1’ (要與test.podspec中的s.version保持一致)
$ git push --tags(提交推送到遠程,成功后在遠程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管理導入使用本地庫文件
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 (會驗證test.podspec 填寫信息是否正確)
成功后打開testProject.xcworkspace項目,庫文件在Pods/Development Pods中
5 創建pods庫的模版庫
(組件化快速生成測試工程常用)
工程文件目錄結構:/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)
需求:在MyTestProject文件夾下,快速創建關於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遠程私有庫的使用
6.1 機制圖解
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打開並復制)
在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)創建一個TestProjectBase項目,用來存放基礎組件的遠程代碼倉庫
$ cd /Users/Funky/Desktop/遠程私有庫/testProjectQuick (進入到基礎組件的模版工程)
$ git status
$ git add .
$ git commit -m ‘模版測試工程'
6> 接着 修改編輯testProjectQuick 模版例子工程的testProjectQuick.podspec文件
$ pod lib lint (驗證當前文件夾下的testProjectQuick.podspec文件編輯是否正確)
$ pod spec lint (驗證遠程的是否正確,此時會報tag ERROR)
$ git status
$ git add .
$ git commit -m '編輯spec文件'
$ git remote add origin https://git.coding.net/funkyHS/TestProjectBase.git (將本地庫與遠程代碼倉庫進行關聯)
$ git push origin master (提交到遠程倉庫)
$ git tag ‘0.1.0'
$ git push --tags (將標簽提交到遠程)
$ pod spec lint (再次驗證)
testProjectQuick.podspec passed validation.
$ pod repo push TestProjectBase testProjectQuick.podspec (將podspec文件提交到本地的私有索引庫TestProjectBase中: 地址 ~/.cocoapods/repos/TestProjectBase)
注意:提交后,依然會驗證 podspec文件,驗證通過后 會自動上傳到在coding上的遠程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]
此時在進入主工程中修改podfile文件
$ cd /Users/Funky/Desktop/遠程私有庫/MyMainProject
$ pod install
大功告成,打開MyMainProject.xcworkspace,此時在pod中可以找到遠程私有庫的代碼!是不是很開心,很興奮!
如果對於如何創建遠程私有庫還有不明白的地方,去看我的下一篇詳細介紹的文章《iOS開發 - CocoaPods遠程私有庫從0到1》
這篇文章對你有所幫助的話,請在我的評論區坐一坐吧!
有不理解或者發現博主存在理解操作不正確的地方,歡迎評論,我會及時修正,以免誤人子弟!