iOS開發 - CocoaPods的常見使用方式


 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中

 

創建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

這篇文章對你有所幫助的話,請在我的評論區坐一坐吧!

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM