在開發(fā)私有pod庫時,我們可能會有這樣的需求,當(dāng)目標(biāo)工程安裝我們的pod庫之后,我們需要執(zhí)行響應(yīng)的操作,比如說在編譯之后上傳dsym文件、在運(yùn)行之前修改項目資源等等,如果平時項目開發(fā)中有這種需求,我們會通過shell或者ruby腳本去執(zhí)行,但是我們自定義的pod庫該怎樣去讓target工程去執(zhí)行這些腳本文件呢,下面上demo教程
1.創(chuàng)建Demo工程
pod lib create Yuehan
2.配置.podspec執(zhí)行腳本
3.podsepc script_phase
這個腳本是作為pod的編譯的一部分余耽,但是與prepare command不同,script是作為xcodebuild的一部分執(zhí)行的微服,腳本可以利用編譯器的一切環(huán)境變量,腳本的執(zhí)行順序是按照聲明順序執(zhí)行的叽奥。
像上面Demo中,我配置了一個script_phase,其中, :script=>
表示所需要執(zhí)行的腳本,我們通過引用,并采用CMD可以書寫多行執(zhí)行腳本,
:execution_position =>
表示是在編譯前執(zhí)行還是編譯之后執(zhí)行,:shell_path =>
表示腳本運(yùn)行環(huán)境路徑
上面Demo中script1執(zhí)行后會寫入一個字符串在tst.txt文件中,pod install->run運(yùn)行結(jié)果
4.script_phase可以支持插入多條腳本
# #script_phase2
script1 = <<-CMD
#Pods目錄
podsPath=$(pwd)
echo $podsPath >> /Users/gelei/Downloads/tst.txt
CMD
script2 = <<-CMD
echo "Hello world" >> /Users/gelei/Downloads/tst.txt
CMD
#shell_path指定腳本運(yùn)行環(huán)境,execution_position指定遍以前還是編譯后執(zhí)行
# s.script_phase = { :name => 'pod compile before', :script => script1, :shell_path =>'/bin/sh', :execution_position => :before_compile}
# #script_phase2
s.script_phase = [
{ :name => 'pod compile before1', :script => script1, :shell_path =>'/bin/sh', :execution_position => :before_compile},
{ :name => 'pod compile before2', :script => script2, :shell_path =>'/bin/sh', :execution_position => :before_compile}
]
4.1pod install->run運(yùn)行結(jié)果
可以看到這里兩個script都執(zhí)行了