一:CocoaPods介紹
CocoaPods
將所有依賴的庫都放在一個名為Pods
的項目下,然后讓主項目
依賴Pods項目
。然后芥永,我們編碼工作都從主項目
轉(zhuǎn)移到Pods項目
。Pods
項目最終會編譯為一個libPod-項目名.a靜態(tài)庫
钝吮,主項目依賴于這個靜態(tài)庫
埋涧。
對于資源文件,CocoaPods
提供了一個名為Pods-resources.sh
的 bash
腳本奇瘦,該腳本在每次項目編譯的時候都會執(zhí)行棘催,將第三方庫的各種資源文件復制到目標目錄中。
CocoaPods
通過一個名為Pods.xcconfig
的文件來在編譯時設置所有的依賴和參數(shù)链患。
CocoaPods
是用Ruby
寫的巧鸭,并由若干個 Ruby
包 (gems) 構(gòu)成的。在解析整合過程中麻捻,最重要的幾個gems
分別是: CocoaPods/CocoaPods, CocoaPods/Core, 和 CocoaPods/Xcodeproj纲仍。
二:CocoaPod的核心組件
CocoaPods/CocoaPod
: 面向用戶的組件,每當執(zhí)行一個pod
命令時贸毕,這個組件都將被激活郑叠。該組件包括了所有使用CocoaPods
涉及到的功能,并且還能通過調(diào)用所有其它的gems
來執(zhí)行任務明棍。CocoaPods/Core
:Core
組件提供支持與CocoaPods
相關(guān)文件的處理乡革,文件主要是Podfile
和podspecs
。Podfile
Podfile
是一個文件,用于定義項目所需要使用的第三方庫沸版。該文件支持高度定制嘁傀,你可以根據(jù)個人喜好對其做出定制。更多相關(guān)信息视粮,請查閱Podfile
指南细办。Podspec
:.podspec
也是一個文件,該文件描述了一個庫是怎樣被添加到工程中的蕾殴。它支持的功能有:列出源文件
笑撞、framework
、編譯選項
和某個庫
所需要的依賴等钓觉。CocoaPods/Xcodeproj
: 這個gem
組件負責所有工程文件的整合茴肥。它能夠創(chuàng)建并修改.xcodeproj
和.xcworkspace
文件。它也可以作為單獨的一個gem
包使用荡灾。如果你想要寫一個腳本來方便地修改工程文件瓤狐,那么可以使用這個gem
。
三:多target時Podfile該如何寫卧晓?
使用Ruby
語法芬首,定義不同的分組赴捞,然后不同的target
可以自由選擇依賴哪些分組逼裆,這種方式看起來更簡潔,對于多target
的項目來說也更友好:
platform :ios, '8.0'
def commonPods #通用pods集
pod 'AFNetworking', '~> 2.0'
pod 'Masonry'
end
def appOnlyPods #app專用pods集
pod 'MBProgressHUD'
end
def extensionPods #擴展專用pods集
pod 'GTSDKExtension'
end
target :TestCocoaPods do
commonPods
appOnlyPods
target :TestCocoaPodsTests do
inherit! :search_paths
# Pods for testing
end
target :TestCocoaPodsUITests do
inherit! :search_paths
# Pods for testing
end
end
target :SecondTarget do
commonPods
end
四: 如何忽略Pods警告赦政?
有些第三方Pod集成進來會有一大堆警告信息胜宇,如果你看著比較難受想把它忽略的話,在Podfile中對應的target或分組下加上關(guān)鍵字inhibit_all_warnings即可恢着。
五:如何直接引用第三方庫中的頭文件桐愉?
在用CocoaPods集成第三方庫之后,默認情況下掰派,我們需要使用類似#import <XXX/YYY.h>的方式引入第三方庫的頭文件从诲。我們可以在Build Settings -> User Header Search Paths中添加${SRCROOT}并設置成recursive,這樣我們就可以直接使用#impot "YYY.h"這種方式了靡羡。
六: pod install 和 pod update
pod install
:在Podfile中用于安裝系洛,新增,刪除pod的命令略步。
【1描扯,當我們第一次運行Podfile時,如果對依賴庫不指定版本的話趟薄,cocoapods會安裝最新的版本绽诚,同時將pods的版本記錄在Podfile.lock文件中,此文件會保持對每個pod已安裝版本的跟蹤,并且鎖定這些版本恩够。
2卒落,再執(zhí)行pod install的話,只會處理沒有記錄在Podfile.lock中的依賴庫蜂桶,會查找匹配Podfile中描述的版本导绷。
3,當然屎飘,如果你約束了pods的版本的話妥曲,會按照你指定的版本進行安裝,同時也會更新Podfile.lock記錄的信息钦购¢苊耍】pod update
:命令僅用在更新指定pod版本,或者更新所有pod押桃。
【推薦用法:pod update 要更新庫的名字
這個命令會忽略Podfile.lock中的記錄葵萎,直接去找符合Podfile文件中的該依賴庫的約束版本(無約束的話就是最新版本)】
在Podfile中添加新的pod后應該用pod install命令,而不是pod update命令唱凯。
注釋:盡量不要用pod update
羡忘,因為它是全部檢查一遍,不僅慢有時候還會出現(xiàn)坑磕昼。上個版本好好的卷雕,下個版本跟新一堆,可能會報錯或者依賴的其他第三方有所沖突票从,兼容等漫雕。。峰鄙。