2013-10-01 16 views
7

私はiOS 5の生活を始めて以来、更新されているアプリを持っています。 iOS 7では、すべてのリソースに対してAsset Catalogを使用するように切り替えました。これはうまく動作しているようです。私はアップルに提出しようとすると、しかし、私は、検証エラーを取得:アイコン、アセットカタログ、インフォリストの混乱

無効な画像パス - キー「CFBundleIconFiles」の下に参照されたパスに見つかりませんでした画像:「[email protected]

他のアイコンについても同じエラーが表示されます。これらのアイコンがアセットカタログに表示され、名前はケースに至るまで正確にわかります。アセットカタログは「バンドルリソースをコピーする」にあり、私のiPhoneとiPadの両方(iOS 7)とiOS 6のシミュレータでアプリを実行すると、すべてのリソースが適切な場所に表示されます。

iOS 6の最小デプロイメントターゲットを使用するようにアプリを更新しました。

アップルにアップデートを提出するにはどうすればよいですか? 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やDeployment Targetに関係なく同じ方法で動作することがわかります。 –

3

さて、ここに私がやったことがあります。私はそれが正しいと100%確信していないが、私はそれが価値があると思った。

  • 私は何をクリアしていないよのiOS 6で使用して
  • の上に、私は資産名ではなくCFBundleIconFiles

のアイコンのファイル名を使用している私は考えていないCFBundleIconFileを、削除明快にするために、適切な名前はそうです:アイコンのファイル名は、アイコンが選択されたときに資産カタログの属性インスペクタに表示される名前を意味します。資産名では私の場合は7つの実際のアイコンを指すAppIconを意味します。

これは両方ともAppleの検証ステップに合格しているようです。私は現在iOS 6デバイスを持っていませんが、Simulatorに正しく表示されます。