前回 Xcode の IPA は、TestFlight で App Store にUPLOADすることが確認できました。Xamarin での IPA Uploadエラーについて調べていきます。
1.エラー内容の確認
エラーの内容は、
Asset validation faild
Invaid Executable Size. The size of your app's executable file プロジェクト名.iOS.app/プロジェクト名.iOS is 77545472 bytes for architecure 'amd64', which exceeds the maximum allowed size of 60MB (ID: IPAのID )
文字通り「 IPA の容量が 60 MB を超えた」ということですがイマドキ少なすぎる気がします。Apple サイトをみると、iOS 7 ~ 8は60MBで、iOS 9以降か500MBと記載されています。 Appleに問合せるとDeveloper Forum で聞けと言われ、当Forumに書いてみましたが情報は得られず。StackOverflow の投稿によると、本当に60MB制限に容量を抑えなとダメなようです。
2.ビルド設定変更
Xamarinのビルドオプションの見直しをしていきます。IPAの容量削減のための方法は、コアビルダであるApple側には説明はなく、Mircrosoft側の このページ と このページ あたりに解説がありました。以下のように実施していきます。尚、画面キャプチャは Visual Studio For MAC のものです。
.iOSのプロパティから コンパイラ (Windows用はビルド) を開き以下のように設定します。 ほぼ当然の設定ですね。
.iOSのプロパティから iOSビルド (Windows用はiOS Build) を開きます。試した結果と設定を以下に示します。理論的に理解しにくい部分です。httpClient実装 は理解困難ですが、Visual Studio For MAC でのtooptip 表示によると、容量と実行速度に左右するとのこと。Monoインタープリタは、インタープリタ==遅い という一通念からoffとしました。
.iOSのプロパティから iOSデバック (Windows用はiOS Debug) を開き以下のように当然ながら設定します。
以上で、IPA 容量は、47 MB → 12 MB に削減できました。無論クリーンビルドにて。
3.注意事項と
そもそもは TestFlight は テスト/デバックなので、ビルト構成「Debug」を「TestFlight」にコピーしてしまうとつまづきます。ビルト構成「Release」を「TestFlight」にコピーして使いましょう。
また Xamarinでは、ソリューション全体のビルト構成 と プラットフォーム毎のビルト構成 の2種類があります。この2つの関連付けを正しくしておかないと、意図しないビルドが実行され、いくら設定変更しても容量が変わらないというワナにはまります。以下、その設定箇所です。
以上でエラー要因は解消したはずです。
次記事 IPAの再UPLOADに続きます。