Invalid Binary?・・・アイコンはAsset Catalogを使いましょう

アプリのiOS11対応を行ってる際に、App Storeへテスト用のアプリをアップロードしたところ、Organizerではアップロードが成功しているのに、iTunes Connectのアプリから「Invalid Binary」ですよ、って通知が来て、アプリがアップロード出来なかった時がありました
その時の対処をご紹介致します

iTunes Storeからメールが・・・

アプリをアップデートする際に、Organizerを使ってアプリをApp Storeへアップロードすると思いますが、これ、意外と時間かかりますよね。
たいていアップロードをポチったら、完了通知が来るまで放置してます。で、通常なら「processingが終わりました」的なノリな通知が来るのですが、今回起きた事象は、「アップロードされたアプリはInvalid Binaryです」的なノリの通知が来て、テストが開始出来ませんでした。WebのiTunes Connectで見ても、アップロードの履歴すら無く・・・どうなってんのこれ・・・と
と、思ったらiTunes Storeからメールが来てました。タイトルは「iTunes Connect: Your app “xxxxx” has one or more issues」的なノリで、内容はInfo.plistに「CFBundleIconName」が無いぞってのと、iOS11以降のSDKではアプリのアイコンは「asset catalog」に定義しなさいって感じでした。詳しくはここ読めやゴラァとのこと・・・
確かにasset使ってないや・・・やりますか・・・

Asset Catalogの追加

まずは、ワークスペースにAsset Catalogを追加します。
Xcodeの左のツリーからAsset Catalogを追加したいGroupを選択し、右クリックして「New File…」を選択します。
新規追加
選択肢が出てくるので「iOS」から「Asset Catalog」をクリックし、「Next」ボタンをクリックします。お好きな名前で保存してください。
選択

Asset CatalogにIconを追加

追加されたAsset Catalogを選択すると、空のカタログが表示されるので、左の部分を右クリックしてAppIconを追加します。
AppIcon追加
追加されたAppIconを選択し必要なアイコンを追加していきます。元々のアイコン画像をそのままドラッグ&ドロップで行けます。
AppIcon
最低限必要なのは120pxと1024pxだと思います。1024pxは多分、今回の件と同じタイミングで必要になったと思われます。
Icon

古い定義を削除

もともと定義していた、アイコンの設定を削除します。「アプリ名-Info.plist」を選択すると、以下のような一覧が表示されます。「Icon Files (iOS 5)」配下の部分が不要になるので、選択し、「-」ボタンで削除します。
古い定義
スッキリ!!
削除後

AppIconをアイコンに設定

最後にAppIconがアイコンとして使われるように設定していきます。
「Project」>「Target」>「General」を選択し、下のほうにスクロールすると、「App Icons and Launch Images」の欄があります。「App Icons Source」の「Use Asset Catalog…」をクリックします。
Icon設定
確認ダイアログが表示されますが、今回はアイコンだけに適用しますので、「Also migrate launch images」のチェックを外し、「Migrate」をクリックします。
マイグレーション1
マイグレーション2
後は「App Icons Source」が選択出来るようになるので、先程作成した「AppIcon」を選択し完了です。
どうも裏で勝手に「AppIcon-2」が作成されてしまうので、そちらは後で削除しておくと良いでしょう。
てか、マイグレーションを先にやって、自動で出来たAppIconにアイコンをペタペタ貼るのが正しいんでしょうかね。
ん・・・マイグレーションすれば自動にペタペタ貼ってくれたのか????!!!
完了

追記

やっぱり、マイグレーションを先にやるのが正解ですね。マイグレーションの存在を知らずに、「なになに・・・追加か〜」って追加し始めたのが駄目でしたね。参考サイトが正しい感じでやってそうですね。ま、終わりよければ全てよしと・・・

関連記事

Swift4におけるsubstringについて

Invalid Binary?・・・PhotoLibraryへのアクセスは説明書...

【Swift4】「'characters' is deprecated」というワ...

SwiftでOpenALの簡単サンプルソース

UIBarButtonItemのサイズがiOS11でおかしくなった際の対処法