此系列文章均整理薪伏、精簡自pluto-y大神的博客猾瘸,感謝大神~
經(jīng)過最近一段時間的模塊化開發(fā)實踐勉盅,組里決定從Carthage轉(zhuǎn)到CocoaPods了铆农。相比于Carthage牺氨,CocoaPods對共有組件的版本控制更好,打包的時候速度也更快些。
Cocoapods是一個框架依賴管理的一個管理工具猴凹,主要是用來管理框架一些開源庫在項目中的引用夷狰。簡而言之就是用來管理你的項目中對開源框架或自己公司子模塊的依賴。
參考:
1. Cocoapods官網(wǎng)
2. Cocoapods Guide
一郊霎、Podfile文件剖析
Podfile.lock文件:
1. 保護pod本地文件們沼头。
2. 在沒有執(zhí)行pod update命令的情況下,是不會講已有的第三方依賴庫進行升級的歹篓。所以運行pod install的情況下還是能編譯通過的瘫证。
pod:
1. 關(guān)于pod的使用在上面可以看得出來是pod '框架名' 參數(shù)。
a. pod '框架名'是固定的
b. 基礎(chǔ)參數(shù)
i. 參數(shù)一: 版本號 可以是'> 3.7', '>= 3.7', '< 3.7', '3.7'以及'~> 3.7'(>指的是正對最后一位庄撮,如使用'> 3.7.4',意味著'>= 3.7.4'并且'< 3.8.0'的意思)
ii. 參數(shù)二:地址 Cocoapods可以指定某一個git的目錄或者是本地的目錄(直接接上:git => 'https://github.com/gowalla/AFNetworking.git'背捌。 表示一直用最新版本)
c. 私有庫參數(shù)
i. path參數(shù)::path => '~/Documents/AFNetworking' (開發(fā)階段,以開發(fā)模式進行其他庫的引用洞斯,如:主工程引用子庫)
ii. 參數(shù)三::branch => 'branch名'毡庆、:tag => 'tag名'、:commit => '提交號'烙如。 (引用特定tag么抗、branch典阵、comit的內(nèi)容)
iii. 參數(shù)四:inhibitallwarnings! (用來避免那些第三方框架中帶來的warnings)
2. platform寝殴,依賴的庫希望在哪個平臺被編譯(platform :ios, '7.0'怀樟。說希望采用iOS7.0的進行編譯)
3. target
a. 指定所適配的target(Xcode中的target)
b. 如果對于一些項目中你的不同target引用的框架不同的話葱她,可以采用這個進行區(qū)分藤树。
c. target 'ScenicHotelDemo' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for ScenicHotelDemo
pod 'JFoundation'
end
target 'SceniHotelKit' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for SceniHotelKit
pod 'JFoundation'
end
4. use_frameworks!
a. 強制把所有項目編譯成動態(tài)庫宛畦。(Swift必須)
5. source
a. 這個參數(shù)是指Cocoapods從哪些倉庫(Spec)中獲得框架的源代碼邻梆,(同時使用開源庫以及自己私有庫的情況下奔誓,這個參數(shù)很有用)
b. 只需要在Podfile文件開頭列出你需要引用庫的所有倉庫地址即可然爆。
c. #open source
source 'https://github.com/Cocoapods/Specs.git'
#JSpecs
source 'http://192.168.1.111/iOS/Specs.git'
6. 收尾
a. Cocoapods Guide
b. platform :ios, '8.0'
#open source
source 'https://github.com/Cocoapods/Specs.git'
#JSpecs
source 'http://192.168.1.111/iOS/Specs.git'
target 'ScenicHotelDemo' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for ScenicHotelDemo
pod 'JFoundation'
end
target 'SceniHotelKit' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for SceniHotelKit
pod 'JFoundation'
end
pod install 和 pod update
1. 用途:更新或者是安裝一個新的第三方框架
a. pod install:是在有新的第三方框架引入是運行
b. pod update:是純粹為了更新本地的第三框架
c. pod repo update:更新本地已有的所有第三框框架
2. 參數(shù)
a. --no-repo-update
i. 在執(zhí)行pod install和pod update兩條命令時站粟,會執(zhí)行pod repo update的操作
ii. 這個命令可以只更新當前項目的第三方框架
b. --verbose 和 --silent
i. 作用:控制pod命令執(zhí)行過程中的輸出
ii. --silent不展示輸出的情況
iii. --verbose展示具體的出錯信息(啰嗦模式)