Cordovaで作成したアプリでアイコンをasset catalogsに変換したら、iTunes Connectで申請したときに下記のようなエラーが発生しました。
1 | Icon specified in the Info.plist not found under the top level app wrapper: AppIcon40x40 |
エラーの内容を理解するのに時間がかかりましたが、どうやらビルドしたipaファイルのtop levelにAppIcon40x40とAppIcon60x60がないということらしい。
なので、ipaファイルの展開して中身を確認してみる。
1 | mv Foobar.ipa Foobar.zip |
たしかに存在しない。AppIcon40x40@2x.pngはあるけど、AppIcon40x40はない…
そして、asset catalogsでアサインしたアイコン(AppIcon)は、ビルドしたipaファイルのInfo.plistの「CFBundleIconFiles」に「AppIcon40x40」のように値が追加される。ゆえに、上述のエラーが返ってくると。
しかし、AppIcon40x40を追加したくても、asset catalogsではRetina用の2xのアイコンしかアサインできない。AppIcon60x60も同じ。asset catalogsにアサインされていないアイコンは、ビルドしたipaファイルには入ってこないので、どうしようもない。
うーん。Deployment Targetも7.0にしているし、AppIcon40x40.pngの出番はないはずなのだけど、何か見落としているのか…
asset catalogsを使ってAppIcon40x40.pngというファイル名でリソースを追加する方法が見つからなかったので、AppIcon40x40.pngファイルを作成して、プロジェクトのResourcesに追加して回避することに…
Cordovaで作成したプロジェクトでasset catalogsに変換した場合は、Resourcesの下に「icons」フォルダ(変換前に使用していたアイコンファイル)が残っているので、icon-40.pngをAppIcon40x40.pngに変更しても回避できます。
うーん。
まあとにかく、これでビルドしたipaファイル(appファイル)にAppIcon40x40.pngが含まれるようになったので、問題を回避することができました。良い方法とは思えないけど。同様の手順でAppIcon60x60の問題も回避できます。
というメモ。