8

私は、iOS 5 用に開始され、それ以来更新されてきたアプリを持っています。iOS 7 では、すべてのリソースにアセット カタログを使用するように切り替えました。これは素晴らしく、うまく機能しているようです。ただし、Apple に送信しようとすると、検証エラーが発生します。

無効な画像パス - キー 'CFBundleIconFiles' で参照されているパスに画像が見つかりません: 'Icon@2x.png'

他のアイコンでも同じエラーが発生します。これらのアイコンアセット カタログに表示され、名前は大文字と小文字に至るまで正確に一致しています。アセット カタログは [バンドル リソースのコピー] にあり、iPhone と iPad (iOS 7) の両方、および iOS 6 のシミュレーターでアプリを実行すると、すべてのリソースが適切な場所に表示されます。

iOS 6 の最小展開ターゲットを使用するようにアプリを更新しました。

では、アップデートを Apple に送信するにはどうすればよいでしょうか? Info.plist に参照が必要ですか? 他に確認すべき設定はありますか? 警告は偽物で、(レーダーを上げた後) 無視する必要がありますか?

4

3 に答える 3

10

アセット カタログが iOS 6 以前用にコンパイルされると、古い方法で画像をコピーしたかのように、画像がアプリ バンドルのルートに配置されます。これが発生すると、Apple はファイル名ではなくアセット名に従って画像に名前を付けます。つまり+[UIImage imageNamed:]、iOS 6 以前でアセットを取得するために引き続き使用できます。

アセット カタログに次のアイコンが設定されている場合、これはアプリ アイコン アセットに当てはまります。

ここに画像の説明を入力

それらは次のようにコンパイルされます。

ここに画像の説明を入力

iOS 6 はまだ iOS 6 であるため、これらのファイルは Info.plist で参照する必要があります。そうしないと、既存のシステムが機能しません。このテスト アプリ用にコンパイルされた Info.plist を見ると、Xcode によって追加さCFBundleIconFilesれているため、追加する必要がないことがわかります。

ここに画像の説明を入力

使用したテスト プロジェクトをgithub.com/danielctull-tests/AssetTestにアップロードしました。

于 2013-10-01T21:00:38.913 に答える
4

さて、これが私がやったことです。100% 正しいとは言えませんが、共有する価値はあると思いました。

  • CFBundleIconFileiOS 6以降では使用されていないと思われるを削除しました
  • アイコンのファイル名ではなくアセット名を使用しましたCFBundleIconFiles

明確にするために、適切な名前が何であるかは明確ではありません。アイコン ファイル名とは、アイコンが選択されたときにアセット カタログの属性インスペクターに表示される名前を意味します。アセット名とはAppIcon、私の場合は 7 つの実際のアイコンを指します。

これはどちらも Apple の検証ステップに合格しており、問題ないように見えます。現在 iOS 6 デバイスを持っていませんが、シミュレーターでは正しく表示されます。

于 2013-10-01T18:18:08.957 に答える