在iOS11下app圖示變空白的問題解決

茉莉兒發表於2017-12-08

背景:

最近在做專案的時候發現執行在模擬器上圖示丟失,變成了蘋果預設的白板圖示。因為一開始只在模擬器上出現,而且也確認沒有人動過圖示檔案,所以沒有在意,後來慢慢的該問題出現在真機上,一開始是隻有iPhone X,然後就是iPhone 8,慢慢的變成不管是模擬器還是真機,所有iOS11 系統的圖示都沒有了。接下來影響到的機型和系統越來越多。

嘗試:

1:一開始想到的是可能有人誤改了圖示檔案,於是刪除了images.xcassest中的AppIcon檔案,從新生成→新增圖示,但是依然未解決。(✘)

2:想到是圖片格式/尺寸的問題,於是所有圖片按照規定重新生成,但是仍然無濟於事。(✘)

3:因為設定圖示的方法除了在images.xcassest中的AppIcon檔案中設定還可以在info.plist設定、或者直接在工程裡面放一個icon.png的圖片來設

置,所以都檢查了一便發現也不是這個原因(✘)

3:重置手機。(✘)

解決:

google了下發現好多國外的開發遇到這個問題,並且都是使用xcode9.X.X版本,所以懷疑是蘋果的BUG

image.png

不過這個問題並不是誰都會出現也不是所有使用xcode9 + iOS11的裝置都會出現

image.png

後來經過大家的討論終於有人說這個其實是cocoapods的BUG,暫時並不能通過更新cocoapods更新來解決,因為最新版的cocoapods

也存在這個問題,解決方法如下:

image.png

在你的podfile中加入以下程式碼就可以了

post_install do |installer|
    copy_pods_resources_path = "Pods/Target Support Files/Pods-工程名/Pods-工程名-resources.sh"
    string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
    assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
    text = File.read(copy_pods_resources_path)
    new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
    File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
複製程式碼

像這樣:

image.png

相關文章