終于到了最后一步的源碼切換,時(shí)長(zhǎng)有點(diǎn)拖得太久了。。。廢話不多說(shuō),直接上正文:
podspec
podspec中spec的全稱是“Specification”,說(shuō)明書(shū),也就是用來(lái)描述一個(gè)pod庫(kù)的相關(guān)說(shuō)明信息的,其實(shí)實(shí)質(zhì)上podspec也是一個(gè)ruby的腳本,既然是一個(gè)腳本,那么我們就能跟寫(xiě)代碼一樣書(shū)寫(xiě)對(duì)應(yīng)代碼讓其實(shí)現(xiàn)一定的功能,例如:
// 打印hello world
a = "puts 'hello world'"
eval a
另外由于ruby有環(huán)境變量的概念,eg:ENV[‘XXXX’]
這就相當(dāng)于全局的字典一樣ENV[#{key}]=#{value}你給他一個(gè)key和value,他會(huì)幫你存起來(lái)。
無(wú)論你在程序的哪里調(diào)用都可以訪問(wèn)到。
那么我們就可以利用這個(gè)環(huán)境變量做一些事情,比如:
// 根據(jù)不同環(huán)境變量書(shū)寫(xiě)if else,打印不同日志
ENV['LOG_TYPE'] == 1
# 表現(xiàn)形式
if ENV['LOG_TYPE'] == 1
// 打印log1
else
// 打印log2
end
那么我們同樣可以利用配置這個(gè)全局變量來(lái)切換源碼啦,自行書(shū)寫(xiě)不再贅述
源碼切換原理
怎樣指定使用源碼還是.framework/.a呢?
1.利用s.source 指向:git/:http來(lái)進(jìn)行切換
通過(guò)配置s.source指向:git/:http來(lái)進(jìn)行切換
if ENV['IS_SOURCE'] == 1
s.source = { :git => '源碼git地址' , :tag = '0.0.1'}
s.resource = 'XXXXXX.{h,m}'
else
s.source = { :http => '打包下載http地址' }
s.resource = 'XXXXXX.{h}'
s.framework = 'WYKit.framework'
end
利: 下載和安裝完全交由pod來(lái)處理,我們只需要配置資源地址即可
利: 靜態(tài)庫(kù)和源碼隔離
弊: 源碼和靜態(tài)庫(kù)切換,需要去刪除本地的文件才能夠進(jìn)行切換
2.利用s.prepare_command 來(lái)執(zhí)行靜態(tài)庫(kù)下載腳本
s.prepare_command = 'xxxx' # xxxx對(duì)應(yīng)你寫(xiě)的腳本
if ENV['IS_SOURCE'] == 1
s.resource = 'XXXXXX.{h,m}'
else
s.resource = 'XXXXXX.{h}'
s.framework = 'xxxxxx.framework'
end
利: 源碼和靜態(tài)庫(kù)共存,切換源碼/靜態(tài)庫(kù)不需要清除緩存。
弊: 無(wú)法做到源碼和靜態(tài)庫(kù)隔離,放權(quán)受限
弊: 我們自己要做到靜態(tài)庫(kù)下載和靜態(tài)庫(kù)校驗(yàn)問(wèn)題
使用哪種方法請(qǐng)讀者自行選擇