標籤:
一、CocoaPods概述
每種語言發展到一個階段,就會出現相應的依賴管理工具,例如 Java 語言的 Maven,nodejs 的 npm。隨著 iOS 開發人員的增多,業界也出現了為 iOS 程式提供依賴管理的工具,它的名字叫做:CocoaPods。
CocoaPods項目的源碼 在 Github 上管理。該項目開始於 2011 年 8 月 12 日,經過多年發展,現在已經成為 iOS 開發事實上的依賴管理標準工具。開發 iOS 項目不可避免地要使用第三方開源庫,CocoaPods 的出現使得我們可以節省設定和更新第三方開源庫的時間。
在沒有使用 CocoaPods 以前,我需要:
(1)把這些第三方開源庫的原始碼檔案複製到項目中,或者設定成 git 的 submodule。
(2)對於這些開源庫通常需要依賴系統的一些 framework,我需要手工地將這些 framework 分別增加到項目依賴中,比如通常情況下,一個網路程式庫就需要增加以下 framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
(3)對於某些開源庫,我還需要設定-licucore或者 -fno-objc-arc等編譯參數
(4)管理這些依賴包的更新。
這些體力活雖然簡單,但毫無技術含量並且浪費時間。在使用 CocoaPods 之後,我只需要將用到的第三方開源庫放到一個名為 Podfile 的檔案中,然後執行pod install。 CocoaPods 就會自動將這些第三方開源庫的源碼下載下來,並且為我的工程設定好相應的系統依賴和編譯參數。
二、CocoaPods 的安裝和使用介紹
三、CocoaPods原理
大概研究了一下 CocoaPods 的原理,它是將所有的依賴庫都放到另一個名為 Pods 項目中,然後讓主專案依賴 Pods 項目,這樣,源碼管理工作都從主專案移到了 Pods 項目中。發現的一些技術細節有:
(1)Pods 項目最終會編譯成一個名為 libPods.a 的檔案,主專案只需要依賴這個 .a 檔案即可。
(2)對於資源檔,CocoaPods 提供了一個名為 Pods-resources.sh 的 bash 指令碼,該指令碼在每次項目編譯的時候都會執行,將第三方庫的各種資源檔複製到目標目錄中。
(3)CocoaPods 通過一個名為 Pods.xcconfig 的檔案來在編譯時間設定所有的依賴和參數。
【iOS-Develop技術文章-004】用CocoaPods做iOS程式的依賴管理