Mac で Apple の Application Loader ユーティリティを使用して .ipa ファイルをアップロードしようとしています。すると、次のエラーが表示されます。
エラー ITMS-90094: 「無効な起動イメージ - アプリには、iOS 6.0 SDK 以降でビルドされたアプリでのみサポートされるサイズ修飾子を持つ起動イメージが含まれています。」
このアプリは、Embarcadero RAD Studio XE7 / C++ Builder の iOS 8.2 SDK を使用して構築されています。有効な Adhoc Distribution モバイル プロビジョニングを作成しました。これは Mac 上にあり、PAServer 15.0 および Xcode 6.2 でアプリをコンパイルするために使用されます。プロジェクトのプロパティ | で適切に定義しました。iOS プラットフォームでのアドホック配布のプロビジョニング。リリース モードに変更し、[構成] で [プロジェクト マネージャー] から [アドホック] を選択しました。最初にアプリをクリーンアップしてから、ビルドしてからデプロイします。完了すると、テスト デバイスで完全に動作する有効な .ipa ファイルを取得できます。
Apple によると、この問題は、iOS SDK 5.1 以前でアプリをビルドし、Default-568h@2x.png 画像 (iPhone 5 の 4 インチ Retina ディスプレイ サポート用) を含めた場合に発生します。この問題を解決するには、iOS 6.0 SDK 以降に対してアプリをビルドする必要があります。しかし、私が述べたように、私は iOS 8.2 SDK を使用しています。8.1 も試してみましたが、システムにインストールした iOS SDK のバージョンは 2 つだけです。
iOS 6 SDK に対してアプリをビルドするつもりがない場合は、プロジェクトから Default-568h@2x.png を削除してください。このファイルを削除しようとしたところ、エラーは消えましたが、「iPhone 5 の最適化要件 - バイナリが iPhone 5 用に最適化されていません」という別のエラーが表示されます。
どういうわけか、IPA ファイルから間違ったバージョンを検出しているに違いありません (これは、Xcode や他の多くの人々がこの問題を抱えているのではなく、方程式の RAD Studio 側の問題であるとしか思えません)。他の投稿では、「デプロイ ターゲット」、「ベース SDK」、「ターゲット SDK」などの用語を使用しています。
これらはすべて正しく設定されていると思いますが、XE7 によって生成された IPA が、iOS 6.0 より後の SDK でビルドされたものとして Application Loader によって適切に検出されるようにするには、どうすれば修正できますか?
私が試した解決策(成功せずに):
ほとんどの検索結果では、Xcode の新しいバージョン (少なくとも 5 以降) でビルドするように言われていますが、私は最新の Xcode バージョン 6.2 を使用しています。注: バージョン 6.0 と記載されているところはどこでも、7.0 も試しました。プロジェクト オプションは、ターゲット: すべての構成 - iOS デバイス プラットフォームを参照します。
http://207.211.86.211/index.php/answers/my-discussion/upload-to-itunesconnect
この男も同じ問題を抱えていて、すべてのプロジェクト オプションを確認するように言っています | アプリケーション画像は正しいサイズです。私は自分のものであることを確認しました。彼はまた、Apple の iOS SDK のリリース バージョンでビルドしていることを確認するよう勧めています。ツール経由 | オプション | 環境オプション | SDK Manager で iPhoneOS 8.x を選択し、[ローカル ファイル キャッシュの更新] をクリックします。これも役に立ちませんでした。https://pjstrnad.com/submitting-application-apple-store-delphi/
まず、プロジェクトの下にカスタム Info.plist ファイルを作成することをお勧めします。展開。次に、無効なイメージの問題を修正するには、MinimumOSVersion キーを追加して 6.0 に設定する必要があると彼は言います。
Custom.info.plist に追加:
<key>MinimumOSVersion</key>
<string>6.0</string>投稿できるリンクは 2 つだけなので、この次のリンクは、community.embarcadero.com の Answers で「iOS 8.1 の展開に関する問題」を検索して、元の投稿を検索する必要があります。
ここで、Hotfix 30036「iOS アプリケーションを Apple AppStore に送信するための Hotfix」をインストールすることをお勧めします。彼らはまた、Project Options |で提案しました。Delphi コンパイラ | コンパイルして、コンパイラに渡す追加オプションに「--ios-version-min:6.0」を追加します。私はBCBを使用しているので、それが私に影響を与えるかどうかはわかりませんが、私も試しました.stackoverflow に関する記事では、.IPA ファイルに対して otool と grep を使用してバージョン情報を確認する方法について説明しています。そこで、ipa ファイルを解凍し、otool を実行して grep を実行すると、次の出力が返されました:
cmd = LC_VERSION_MIN_IPHONEOS
cmdsize = 16
version = 7.0
sdk = 7.1
私が期待するように 8.1 または 8.2 とは言いませんが、両方のバージョンは7+。これは間違いなく 6.0 よりも新しいため、Application Loader がバージョンを取得する場所が他にあるはずです。プロジェクト オプションの変更 | C++ リンカ: 高度: 6.0 までサポートされる最小 iOS バージョン。
プロジェクト オプションの変更 | Delphi コンパイラ | リンク: iOS の最小バージョンは 6.0 までサポートされています。
まったく新しい空のマルチデバイス アプリケーションを作成し、プロビジョニングして、Application Loader 経由でアップロードしようとしました。これはまったく同じエラーで失敗します。