發生錯誤產生條件
- 專案內有多的Target (不確定是不是因為這樣,但基本上不會需要多個Target)
- 共用到了相同的一些項目圖片也整個複製過去的混亂情況
原因
圖片檔案名稱不同,但使用fastlane打包時提示CompileAssetCatalog的錯誤問題
基本上從瞎掰的角度來說,Xcode應該是認知到「欸~你的專案底下有兩張一樣的圖片噢!」
但明明已經修改了檔案名稱為什麼還會被這樣認為呢?
因為Xcode認的是圖片背後的hash!
上述所說的都是我個人亂猜
驗證
建立一個資料夾並且放一張圖片
- 使用指令查看該圖片的hash
1 | shasum 1.jpeg |
結果如圖
複製該張圖片到同一個資料夾,系統會替你加上「拷貝」兩個字
- 使用指令查看該拷貝圖片的hash
1 | shasum 1拷貝.jpeg |
就算檔案名稱不同,兩個hash是一樣的,Xcode就會認為是同一張圖片?
解決
- 安裝ImageMagick
1 | brew install imagemagick |
- 修改hash(但我覺得這個指令背後做的事情是有壓縮的,但不影響)
- 修改拷貝圖片的hash
1 | find . -iname 1拷貝.jpeg -exec echo {} \; -exec convert {} {} \; |
再次驗證可以清楚的看到兩張圖片的hash確實已經不一樣了
- 如果想要一次性修改當前目錄下的所有圖片
- 注意指令內的附檔名 ex *.png or *.jpeg
1 | find . -iname "*.png" -exec echo {} \; -exec convert {} {} \; |