使用指令碼刪除ios工程中未使用圖片
最近在讀唐巧大神的《iOS開發進階》,學到了一個大招:使用指令碼刪除ios中未使用的圖片(紙書上有點小問題,參考github上的issue:使用指令碼刪除ios中未使用圖片)。
issue中得到的建議是:將代碼儲存在一個.sh檔案中,在xcode裡面執行shell指令檔。看到這裡,頭瞬間大了,大學學的shell都還給linux老師了....還有xcode中怎麼執行指令碼啊???
google一下,找到mac下建立.sh檔案的小白方法:教你在mac上面建立可執行指令檔。當然還有 XCode中執行指令碼的三種方法。下面針對本次操作,自己寫個總結:
1、建立可執行指令檔:
(1)開啟sublime,輸入以下shell代碼:
#! /bin/bashfor i in `find . -name "*.png" -o -name "*.jpg"`; do file=`basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x` result=`ack -i "$file"` if [ -z "$result" ]; then echo "$i" # 如果需要,可以直接執行刪除: # rm "$i" fidone
(2)儲存檔案名稱:deletePhoto.sh,記住儲存的路徑:/Users/linafu/deletePhoto
(3)為指令檔添加執行許可權:在終端輸入如下指令碼:chmod +x ./deletePhoto
至此,shell指令碼就建好了!
2、在xcode中執行已經建立好了的指令碼:
(1)在xcode功能表列中:file->new->target,然後osx->other->external build system,命名為:scriptTarget,這樣就建立了一個虛擬target。
(2)在工程的target區,選中scriptTarget,在build tool裡面輸入:/Users/linafu/deletePhoto
(3)在工程target的build phasese->target dependencies中添加scriptTarget
好了,以後不論什麼時候,build工程之前都會先build這個虛擬target,通過build這個target來運行指令碼。當然,我們並不會每次編譯都需要刪除圖片,所以,使用完可以將它從build phasese->target dependencies中移除。
忘了說,在所有的步驟之前,要先在終端通過:brew install ack 命令安裝ack(ack用於做搜尋)。
哈哈,添加太不方便,就不了,不夠明白可以看文中的連結。另外,這裡附上另一個刪除ios中未使用圖片的方法,用的是python指令碼:傳送門