給iOS應用的Logo加上構建資訊水印

微許時光發表於2018-01-02

1 前言:

以前,翻部落格看到別人的 app 在 debug 時,應用圖示上面顯示 git 分支和提交記錄,挺好奇,由於不知道搜尋關鍵詞,最後沒搜到方案. 每次測試同事在持續整合後測試時,分不清構建的版本是否是想要的,很多時候要和開發者溝通,定位問題版本也不及時.可能浪費大家精力,拖慢工程進度.

2 方案:

最近,剛好看到小魚周凌宇的部落格,有這個解決方案. 主要解決思路是在 build app工程以後,執行一個shell指令碼,通過ImageMagick(圖片處理工具)將 AppIcon 修改成自己想要的 icon, 替換原來的 icon. 小魚周凌宇的教程寫的很詳細.本以為按照教程,直接 build, 然後順利得到結果. But...shell 執行失敗. 錯誤提示:

error: CgBI: unhandled critical chunk AppIcon20x20@2x.png
複製程式碼

錯誤提示大概就是:不能處理 AppIcon20x20@2x.png. 接下來就是排查錯誤: ①.排除不是ImageMagick的問題. 在其他目錄下ImageMagick裁剪處理jpg,png 等其他格式的圖片都沒有問題. ②.定位是 Xcode 構建專案時,修改了 png 圖片. 在終端進入專案構建好的檔案(路徑: /Users/(username)/Library/Developer/Xcode/DerivedData/YourApp-gduslbgdmwwzedausnprzxmwoppu(隨機字母)/Build/Products/Debug-iphoneos/YourApp.app/ )下,用ImageMagick修改圖片,發現修改 jpg 沒有問題,修改 png 就會報錯.

#同樣的錯誤提示:
error: CgBI: unhandled critical chunk test01.png
複製程式碼

用 google 搜尋 "Xcode 9.1 convert: CgBI: unhandled critical chunk" 類似這樣的關鍵詞,可以看到 Stack Overflow 上有類似的問題: libpng error: CgBI: unhandled critical chunk xcode 7.3 原因大意就是:在 Xcode 7.3以後,在 Xcode build 專案時,預設會把 png 壓縮 和 修改.然後得到新的png圖片,ImageMagick 在修改是會遇到上述的問題.

3 修改:

既然問題找到了,接下來是就是修改步驟:(只在 Debug 模式下,修改)

YourProjectName => PROJECT => 選中專案 => build setting => Compress Png Files => Debug 的屬性由 No 改為 Yes.
YourProjectName => PROJECT => 選中專案 => build setting => Remove Text Metadata From Png Files => Debug 的屬性由 No 改為 Yes.
複製程式碼

接著, clean 專案,重新執行,編譯成功.

修改前AppIcon.png
修改後AppIcon.png

點選檢視詳細操作步驟:

shell 指令碼在小魚周凌宇分享的指令碼上做了小小的修改,修改了水印高度,增加了構建時間.1代表 build number, dev 代表 git 分支名字,50f51a8代表 git 最後一次提交記錄的短hash值. 如果想要更強大的功能,可以關注 Bootstrap 這個庫.

最後,感謝大家的分享.

相關文章