はっきりってめんどくさすぎるので対応方法を考えます。
iOSアプリへ自前のアイコンを適用する
Assets.xcassets → AppIcon
から対応しているサイズの画像ファイルを17回ドラッグ&ドロップすることによってアイコンを適用することができます。
......めんどくさい
iOSアプリのアイコンの構成を確認してみる
Assets.xcassets 以下を確認して見ます。
直下に AppIcon.appiconsetディレクトリがありさらにその下がアイコン画像ファイル群とContents.jsonで構成されています。
Contents.json はサイズ、iPhoneかiPadか、スケールによって分けられているようです(サイズだけじゃダメ?被ってるのあるし)
画像を生成してContents.json を加工すればどうにかできそうです。
必要なアイコンを半自動生成してみる
事前に 1024*1024 のアイコン画像(icon.png)を用意しておきます(申請用に必要になります)
透過画像にせず背景は塗りつぶすようにします。(角丸で切り取られます)
以下のようなスクリプトファイルを用意します(実行権限を付与すること)
createIcon.command
cd `dirname $0`
echo "iOS用のアイコンを作成します。当該ディレクトリに変換する画像icon.pngを配置します"
sips -Z 120 icon.png --out Icon-60@2x.png
sips -Z 180 icon.png --out Icon-60@3x.png
sips -Z 76 icon.png --out Icon-76@.png
sips -Z 152 icon.png --out Icon-76@2x.png
sips -Z 167 icon.png --out Icon-83.5@2x.png
sips -Z 29 icon.png --out Icon-29@.png
sips -Z 58 icon.png --out Icon-29@2x.png
sips -Z 87 icon.png --out Icon-29@3x.png
sips -Z 40 icon.png --out Icon-Small-40@.png
sips -Z 80 icon.png --out Icon-Small-40@2x.png
sips -Z 120 icon.png --out Icon-Small-40@3x.png
sips -Z 40 icon.png --out iPhone-20@2x.png
sips -Z 60 icon.png --out iPhone-20@3x.png
sips -Z 20 icon.png --out iPad-20@1x.png
sips -Z 40 icon.png --out iPad-20@2x.png
sips はMac固有の画像処理のコマンドです。echo "iOS用のアイコンを作成します。当該ディレクトリに変換する画像icon.pngを配置します"
sips -Z 120 icon.png --out Icon-60@2x.png
sips -Z 180 icon.png --out Icon-60@3x.png
sips -Z 76 icon.png --out Icon-76@.png
sips -Z 152 icon.png --out Icon-76@2x.png
sips -Z 167 icon.png --out Icon-83.5@2x.png
sips -Z 29 icon.png --out Icon-29@.png
sips -Z 58 icon.png --out Icon-29@2x.png
sips -Z 87 icon.png --out Icon-29@3x.png
sips -Z 40 icon.png --out Icon-Small-40@.png
sips -Z 80 icon.png --out Icon-Small-40@2x.png
sips -Z 120 icon.png --out Icon-Small-40@3x.png
sips -Z 40 icon.png --out iPhone-20@2x.png
sips -Z 60 icon.png --out iPhone-20@3x.png
sips -Z 20 icon.png --out iPad-20@1x.png
sips -Z 40 icon.png --out iPad-20@2x.png
Contents.jsonを以下のように書き換えます。
{ "images" : [ { "size" : "20x20", "idiom" : "iphone", "filename" : "iPhone-20@2x.png", "scale" : "2x" }, { "size" : "20x20", "idiom" : "iphone", "filename" : "iPhone-20@3x.png", "scale" : "3x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-29@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "iphone", "filename" : "Icon-29@3x.png", "scale" : "3x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-Small-40@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-Small-40@3x.png", "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-60@2x.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", "filename" : "Icon-60@3x.png", "scale" : "3x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "iPad-20@1x.png", "scale" : "1x" }, { "size" : "20x20", "idiom" : "ipad", "filename" : "iPad-20@2x.png", "scale" : "2x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-29@.png", "scale" : "1x" }, { "size" : "29x29", "idiom" : "ipad", "filename" : "Icon-29@2x.png", "scale" : "2x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-Small-40@.png", "scale" : "1x" }, { "size" : "40x40", "idiom" : "ipad", "filename" : "Icon-Small-40@2x.png", "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-76@.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", "filename" : "Icon-76@2x.png", "scale" : "2x" }, { "size" : "83.5x83.5", "idiom" : "ipad", "filename" : "Icon-83.5@2x.png", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } }
サイズ被りは同じファイルを指定するように変更してもいいかも。
Contents.jsonのfilenameはプロジェクト作成時は存在せず、ドラッグ&ドロップした時に追記されます。
追記済みのContents.jsonで置き換えて対応する画像を配置すればやりたいことが実現できるという寸法です。
ディレクトリ構成は以下のようになります。
Xcodeから
Assets.xcassets → AppIcon
を確認してみるとアイコン画像で全て埋まっているはずです。
新しい機種が出たらContents.jsonも適宜変更する必要があるはず。
json を解析してそれっぽい画像を用意してContents.jsonへfileNameを追記するようなツールを誰か作ってください。