【Xcode】アップロード時にITMS-4238エラーが出た場合【Application Loader】
この記事は最終更新から5年以上が経過しています。情報が古くなっている可能性があります。
先日、iOSのアプリ審査でリジェクト(却下)されました(´A`)
指摘された内容を修正・再ビルドし、XcodeのApplication Loaderを使ってアップロードしようとしたところ、こんなエラーに遭遇。
ERROR ITMS-4238: “Redundant Binary Upload. There already exists a binary upload with build version ‘1.0.5’ for train ‘1.0.5’” at SoftwareAssets/PreReleaseSoftwareAsset
このエラーの対処法について、貴重なビルド数(*Monaca freeプランだと上限あり)を消費してしまった戒めをこめてまとめます。
ITMS-4238エラーってどんなエラー?
改めてエラーメッセージ。
ERROR ITMS-4238: “Redundant Binary Upload. There already exists a binary upload with build version ‘1.0.5’ for train ‘1.0.5’” at SoftwareAssets/PreReleaseSoftwareAsset
日本語訳だと、
エラーITMS-4238: “冗長バイナリアップロード。ソフトウェアアセット/ PreReleaseSoftwareAssetでtrain ‘1.0.5’のビルドバージョン ‘1.0.5’を持つバイナリアップロードがすでに存在します。
Google翻訳より
ということで、既に同じバージョンのビルドがiTunesConnectにアップロードされてるよ!というエラーです。
確かにiTunesConnect>マイAPPのTestFlightやアクティビティを見ると、却下されたビルドも存在したままになっています。
以前はアップロードしたビルドは消せたとのことですが、現在は無理みたいですね。
勿論iTunesConnectに入力する(App Storeに表示される)バージョンをあげれば問題ありませんが、そのバージョンはあげないまま修正版をアップロードする方法があります。
バンドルバージョンをあげればいい
バンドルバージョンとは
Bundle version:内部バージョン(文字列)
内部のバージョン番号でユーザに見せるものではない。
リリースの時に特に利用されていない。
ユニークである必要はない(*1)。
(中略)*1あるバージョンのリリース時にパッケージを複数個アップロードすることができ、その中から審査対象を選ぶことができる。その時に、Bundle versionがすでにアップ済みのものと同じだとアップロードすることができない。
引用元)AndroidとiOSのアプリバージョン周りについてまとめてみた
こちらにある通り、同じバージョンでビルドを複数あげたい時に使われる内部バージョンがバンドルバージョンです。
バンドルバージョンまで同じビルドをあげるとITMS-4238エラーが発生するということですね。
バンドルバージョンの設定方法
Xcodeで開発している方は、こちらの記事が参考になると思います。
Xcode6 EROOR ITMS-4238というエラーが出たら(リンク切れ)- iTunes Connectにビルドを再アップロードする
以下はMonacaでの設定方法です。
MonacaではiOSアプリ設定から指定できます。
バンドルバージョンは、デフォルトだと「バンドルバージョンを指定」のチェックボックスがOFF、バージョンと同じ文字列がグレーアウトしている状態だと思います。
この「バンドルバージョンを指定」のチェックを外して、違う文字列を入れましょう。
ここではバージョンが1.0.5なので、適当に1.0.5.1と入れてみました。その後保存をクリック。
そしてビルドし、Application LoaderでiTunesConnectへアップロード。
そうするとITMS-4238エラーはでなくなったかと思います。
iTunesConnectにアップロードされたという連絡が来たら、
ビルドのエリアから複数のビルドパッケージから選択できるようになってるので、新しい方を選択すればok!
私はこのエラーでビルド上限に達して1日待つことがありました。。(´ω`)
再アップロード時は気をつけましょう!