2013-10-01 83 views
7

我有一個應用程序,開始iOS 5的生活,並從那以後一直更新。對於iOS 7,我已切換到使用資源目錄來處理所有資源,這很好,看起來運行良好。然而,當我試圖提交給蘋果,我得到驗證錯誤:圖標,資產目錄和Info.plist混淆

無效圖像路徑 - 無圖像的下鍵「CFBundleIconFiles」引用的路徑中找到:「[email protected]

我也得到了其他圖標的相同錯誤。這些圖標出現在資產目錄中,並且名稱 - 直至案例 - 完全匹配,據我所知。當我在iPhone和iPad(iOS 7中)以及iOS 6的模擬器上運行應用程序時,資源目錄位於「複製軟件包資源」中,所有資源都顯示在正確的位置。

我有更新了應用程序以使用iOS 6的最低部署目標。

那麼,如何成功將我的更新提交給Apple?我需要Info.plist中的參考嗎?是否還有其他設置需要檢查?警告是虛假的,還有一些我應該忽略的事情(在升起雷達後)?

回答

10

爲iOS 6及更低版本編譯資產目錄時,圖像將放在應用程序包的根目錄中,就像您剛剛以舊方式複製它們一樣。發生這種情況時,Apple根據資產名稱而不是文件名命名圖像,這意味着我們仍然可以使用+[UIImage imageNamed:]獲取iOS 6及更低版本的資產。

這是真實的應用程序圖標的資產,當我們在我們的資產目錄設置下面的圖標:

enter image description here

他們變得編譯的,像這樣:

enter image description here

由於iOS 6仍然是iOS 6,這些文件必須在Info.plist中引用,否則現有系統將無法工作。查看這個測試應用程序編譯的Info.plist,你會發現Xcode已經爲我們添加了CFBundleIconFiles,所以我們不需要。

enter image description here

我已經上傳我以前github.com/danielctull-tests/AssetTest測試項目。

+0

「當爲iOS 6或更低版本編譯資產目錄時,圖像放在應用程序包的根目錄下」 - 對於iOS 7和更高版本,它有所不同嗎?據我所知,無論我使用的是SDK還是部署目標,其行爲都是相同的。 –

3

好的,這就是我最終做的。我不是100%肯定這是正確的,但我認爲這是值得分享的。

  • 我刪除CFBundleIconFile,我不認爲這是在iOS 6以上
  • 用我用的資產名稱,而不是在CFBundleIconFiles

圖標文件名,我不清楚是什麼爲了清楚起見,專有名稱是這樣的:通過圖標文件名,我的意思是在選擇圖標時資產目錄的屬性檢查器中可見的名稱;資產名稱我的意思是AppIcon,它是指我的情況下的七個實際圖標。

這兩個都通過蘋果的驗證步驟,似乎看起來沒問題。我目前沒有iOS 6設備,但它在模擬器中正確顯示。