使用CocoaPods來做iOS程式的包依賴管理
前言
每種語言發展到一個階段,就會出現相應的依賴管理工具, 或者是中央程式碼倉庫。比如
- Java: maven,Ivy
- Ruby: gems
- Python: pip, easy_install
- Nodejs: npm
隨著iOS開發者的增多,業界也出現了為iOS程式提供依賴管理的工具,這個工具叫:CocoaPods。
CocoaPods簡介
CocoaPods是一個負責管理iOS專案中第三方開原始碼的工具。CocoaPods專案的原始碼在Github上管理。該專案開始於2011年8月12日,經過一年多的發展,現在已經超過1000次提交,並且持續保持活躍更新。開發iOS專案不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設定和更新第三方開源庫的時間。
拿我之前開發的粉筆網iPhone客戶端為例,其使用了14個第三方開源庫。在沒有使用CocoaPods以前,我需要:
- 把這些第三方開源庫的相關檔案複製到專案中,或者設定成git的submodule,然後這些開源庫通常需要依賴系統的一些framework,我需要手工地將這些framework一一增加到專案依賴中,比如ASI網路庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib。
- 對於RegexKitLite這個正則表示式庫,我還需要設定-licucore的編譯引數
- 手工管理這些依賴包的更新。
這些體力活雖然簡單,但毫無技術含量並且浪費時間。在使用CocoaPods之後,我只需要將用到的第三方開源庫放到一個名為Podfile的檔案中,然後執行pod install。CocoaPods就會自動將這些第三方開源庫的原始碼下載下來,並且為我的工程設定好相應的系統依賴和編譯引數。
CocoaPods的安裝和使用介紹
安裝
安裝方式異常簡單, Mac下都自帶ruby,使用ruby的gem命令即可下載安裝:
<span class="line-number">1</span> <span class="line-number">2</span> |
|
使用
使用時需要新建一個名為Podfile的檔案,以如下格式,將依賴的庫名字依次列在檔案中即可
<span class="line-number">1</span> <span class="line-number">2</span> <span class="line-number">3</span> <span class="line-number">4</span> <span class="line-number">5</span> |
|
然後你將編輯好的Podfile檔案放到你的專案根目錄中,執行如下命令即可:
<span class="line-number">1</span> <span class="line-number">2</span> |
|
現在,你的所有第三方庫都已經下載完成並且設定好了編譯引數和依賴,你只需要記住如下2點即可:
- 使用CocoaPods生成的 .xcworkspace 檔案來開啟工程,而不是以前的 .xcodeproj 檔案。
- 每次更改了Podfile檔案,你需要重新執行一次pod install命令。
查詢第三方庫
你如果不知道cocoaPods管理的庫中,是否有你想要的庫,那麼你可以通過pod search命令進行查詢,以下是我用pod search json查詢到的所有可用的庫:
<span class="line-number">1</span> <span class="line-number">2</span> <span class="line-number">3</span> <span class="line-number">4</span> <span class="line-number">5</span> <span class="line-number">6</span> <span class="line-number">7</span> <span class="line-number">8</span> <span class="line-number">9</span> <span class="line-number">10</span> <span class="line-number">11</span> <span class="line-number">12</span> <span class="line-number">13</span> <span class="line-number">14</span> <span class="line-number">15</span> <span class="line-number">16</span> <span class="line-number">17</span> <span class="line-number">18</span> <span class="line-number">19</span> <span class="line-number">20</span> <span class="line-number">21</span> <span class="line-number">22</span> <span class="line-number">23</span> <span class="line-number">24</span> <span class="line-number">25</span> <span class="line-number">26</span> <span class="line-number">27</span> <span class="line-number">28</span> <span class="line-number">29</span> <span class="line-number">30</span> <span class="line-number">31</span> <span class="line-number">32</span> <span class="line-number">33</span> <span class="line-number">34</span> <span class="line-number">35</span> <span class="line-number">36</span> <span class="line-number">37</span> <span class="line-number">38</span> <span class="line-number">39</span> <span class="line-number">40</span> <span class="line-number">41</span> <span class="line-number">42</span> <span class="line-number">43</span> <span class="line-number">44</span> |
|
生成第三方庫的幫助文件
如果你想讓CococaPods幫你生成第三方庫的幫助文件,並整合到XCode中,那麼用brew安裝appledoc即可:
<span class="line-number">1</span> |
|
關於appledoc,我在今年初的另一篇部落格《使用Objective-C的文件生成工具:appledoc》中有專門介紹。它最大的優點是可以將幫助文件整合到XCode中,這樣你在敲程式碼的時候,按住opt鍵單擊類名或方法名,就可以顯示出相應的幫助文件。
原理
大概研究了一下CocoaPods的原理,它是將所有的依賴庫都放到另一個名為Pods專案中,然後讓主專案依賴Pods專案,這樣,原始碼管理工作都從主專案移到了Pods專案中。發現的一些技術細節有:
- Pods專案最終會編譯成一個名為libPods.a的檔案,主專案只需要依賴這個.a檔案即可。
- 對於資原始檔,CocoaPods提供了一個名為Pods-resources.sh的bash指令碼,該指令碼在每次專案編譯的時候都會執行,將第三方庫的各種資原始檔複製到目標目錄中。
- CocoaPods通過一個名為Pods.xcconfig的檔案來在編譯時設定所有的依賴和引數。
相關推薦
使用CocoaPods來做iOS程式的包依賴管理
前言 每種語言發展到一個階段,就會出現相應的依賴管理工具, 或者是中央程式碼倉庫。比如 Java: maven,IvyRuby: gemsPython: pip, easy_installNodejs: npm隨著iOS開發者的增多,業界也出現了為iOS程式提供依賴管理的工具,這個工具叫:CocoaPo
在CocoaPods上建立自己iOS程式的依賴管理
一、github上建立開源專案 GitHub是目前使用最廣的分散式專案管理軟體。下面是如何從零開始,將自己的專案放到GitHub上面,並能夠像SVN那般update和commit。 2、按照的指引
Golang Gin 專案包依賴管理 godep 使用
Golang Gin 專案包依賴管理 godep 使用 標籤(空格分隔): Go 在按照github.com/tools/godep文件go get完包以後,調整專案結構為$GOPATH/src/$PROJECT_NAME/,同時使專案編譯沒有問題。執行godep save命令,出現了一系列包缺失的問
Golang的包依賴管理 (package dependency manager)
Golang 的開發者對GOPATH都不陌生, 它是進行go 專案開發的’workspace’。 go專案的原始碼,可執行檔案,以及依賴庫的存放都是通過gopath的相關目錄結構進行組織的,而且go原生的依賴管理也是使用GOPATH進行組織。 如當前專案中import “
PHP的包依賴管理工具Composer簡介
Composer是一個基於專案的依賴管理器,負責將PHP專案所依賴的包或庫安裝到專案所在的目錄中,預設它不會安裝任何資料到全域性。它用於取代之前所使用的pear工具。1 安裝Composercurl -sS https://getcomposer.org/installer
PHP的包依賴管理工具Composer
Composer是一個基於專案的依賴管理器,負責將PHP專案所依賴的包或庫安裝到專案所在的目錄中,預設它不會安裝任何資料到全域性。它用於取代之前所使用的pear工具。1 安裝Composer [plain] view plaincopyprint? curl
Node.js 第三方包的安裝、升級、解除安裝,以及包依賴管理
本地安裝: npm install package-name 全域性全裝: npm install -g package-name 升級: npm update 解除安裝: npm uninstall 包依賴管理,通過package.json 例如: { "
iOS 依賴管理工具 CocoaPods 和 Carthage 的使用及原理
隨著網際網路的高速發展,個大網際網路公司為更高效研發自己的產品,而不斷研發適合自己的平臺的開發語言。當這些新的語言被廣泛推廣、被更多的開發團隊所接納,被用於開發不同的場景,這個過程中會研發出很多很多方便開發的框架。發展到一定階段,都會出現相應的依賴管理工具。例如
用Ant-Ivy來做類似Maven的包管理
If: 你要準備建立新專案,那就直接上Maven吧! Else: 如果你手頭上的專案正在用Ant工具,你可以考慮用Ant-Ivy來做類似Maven的依賴(包)管理。這個工具還有衍生的IvyDE外掛來方便你使用Eclipse開發環境。下面例子將演示設定基本的Ant-Ivy環
使用CocoaPods做依賴管理(淘寶源更換為HTTPS)--轉自 唐巧技術部落格
CocoaPods 簡介 每種語言發展到一個階段,就會出現相應的依賴管理工具,例如 Java 語言的 Maven,nodejs 的 npm。隨著 iOS 開發者的增多,業界也出現了為 iOS 程式提供依賴管理的工具,它的名字叫做:CocoaPods。 CocoaPod
關於Java如何獲取系統時間,並用它來做一個圖書管理系統
首先,這個圖書管理系統自定義一個final常量不能更改,用作圖書館借閱歸還的最晚時間,也可以自定義歸還時間。 然後,先獲取使用者借閱時間,再用SimpleDataFormata元件來格式化日期(yyyy-MM-dd),再將獲取的時間加在系統的時間上得到使用者自定義的歸還時間。 最後,再通過方
程式包管理rpm和yum
Linux程式包管理: API:Application Programming Interface原始碼包 POSIX:Portable OS 程式原始碼 --> 預處理 --> 編譯 --> 彙編 --> 連結 靜態編譯: 共享編譯:.so A
Spring-boot構建多模組依賴工程時,maven打包異常:程式包xxx不存在
在qizhi專案改版的時候, 所有程式碼都遷移好了, 但是compile的時候報程式包*****不存在, 具體到某一個類就是: 找不到符號. 下面這篇文章是正解 http://hbxflihua.iteye.com/blog/2431537 具體內容如下: =======================
week---3 Linux程式包管理及if語句
一、Linux程式包管理 RPM(軟體包管理器) YUM(軟體倉庫) 二、計算數字 例如 var1=10.46var1=10.46 var2=43.67 var3=33.2 var4=71 result=**(bc<<EOF∗
Android單元測試(6):使用dagger2來做依賴注入
注: 1. 程式碼中的 //<= 表示新加的、修改的等需要重點關注的程式碼 2. Class#method表示一個類的instance method,比如 LoginPresenter#login 表示 LoginPresenter的login(非靜態)方法。 問題
微信小程式黑客馬拉松即將開始,來做最酷的 Mini Program Creators!
微信小程式黑客馬拉松正式啟動 近日,小程式斬獲一項世界級殊榮——作為一項全新的技術和應用創新,小程式首次獲選世界網際網路領先科技成果。目前小程式應用數量已超過 100 萬,覆蓋了 200 多個細分行業,日活使用者達到 2 億。 微信小程式已經構建了一個完整的開發環
為什麼中文不能用來做程式設計,而英文卻可以?深資程式設計師告訴你答案
為什麼中文不能用來做程式設計,而英文卻可以?深資程式設計師告訴你答案 小編推薦一個學C語言/C++的學習群:948954484,入群即送C/C++全套學習資料,滿滿的乾貨! 接觸過程式設計的人都知道,不管是國內還是國外,大家都是使用英文來做程式設計的。所以有不少人很好奇,為什麼只能用英文來寫
美工請假了,程式設計師來做個圖頂一下
本文來源:EDIUS(今日頭條) 連結:http://www.toutiao.com/a6438868399145763073/ 圖片來自:Reddit 如果哪天設計師消失了,這個世界會變成什麼樣? 經常逛淘寶的朋友會發現,在淘寶或者其他電商網站,有一個“設計”流派,叫做“設計師跑路了”派,跟“江南
Android Studio compile project新增一個本地專案依賴包時,提示程式包不存在
問題情景 在一個專案裡,建了一個library專案和application專案,在application專案的build.gradle將library專案compile project進來,編譯的時候都正常,但是執行的時候,提示程式包不存在。 解決辦法
程式包管理器控制檯在哪
在安裝有NuGet外掛的VS上開啟NuGet命令視窗的過程如下:依次選擇選單Tools(工具)->Library Package Manager(庫程式包管理器)->Pakcage Manager Conso