9

バイナリを iTunes Connect にアップロードしたところ、検証され、App Store への公開が承認されました。私のアプリケーションが無効なバイナリであるという内容の電子メールを Apple から受け取りました。

開発者各位

「プロジェクト名」の最近の配信で 1 つ以上の問題が見つかりました。配送を処理するには、次の問題を修正する必要があります。

iPhone 5 の最適化要件- バイナリは iPhone 5 用に最適化されていません。5 月 1 日以降、提出されるすべての新しい iPhone アプリとアプリの更新は、iPhone 5 の 4 インチ ディスプレイをサポートする必要があります。すべてのアプリには、適切なサイズの起動イメージが含まれている必要があります。iOS ヒューマン インターフェイス ガイドラインを確認して、iPhone 5 のサポートの詳細を確認してください。

次の問題を修正する必要はありませんが、これらの問題を認識してもらいたいと考えています。

非 PIE バイナリ- 実行可能ファイル 'xyz.app' は、位置に依存しない実行可能ファイルではありません。ビルド設定が PIE 実行可能ファイルを作成するように構成されていることを確認してください。必要な修正が完了したら、[バージョンの詳細] ページに移動し、[バイナリをアップロードする準備ができました] をクリックします。アプリのステータスが「アップロード待ち」になるまで、送信プロセスを続行します。その後、修正されたバイナリを配信できます。

>のDon't Create Position Independent Executablesオプションを に変更しましたが、上記と同じメッセージが表示されます。TargetBuild SettingsYES

4

3 に答える 3

8

問題とその解決方法を説明する Apple からのドキュメントがあります: QA1788: Building a Position Independent Executable

アプリケーションを PIE としてビルドする手順

  1. Xcode で、[ターゲット] セクションでターゲットを選択し、[ビルド設定] タブをクリックしてその設定を表示します。

  2. iOS アプリの場合は、 iOS 4.3 以降iOS Deployment Targetに設定します。Mac アプリの場合は、 OS X 10.7 以降に設定します。OS X Deployment Target

  3. がNOGenerate Position-Dependent Codeに設定されていることを確認します。

  4. がNODon't Create Position Independent Executablesに設定されていることを確認します。

于 2013-05-24T20:47:57.630 に答える
5

今週のすべてのアプリ アップデートで同じメッセージが表示されます。「位置に依存しない実行可能ファイルを作成しない」を「いいえ」に、「位置に依存するコードを生成する」をデフォルトの「いいえ」に設定する必要があります。

重要なのは、「iOS Deployment Target」を 4.3 以降に設定する必要があることです。そうしないと、PIE 設定が無視されます。

このコマンドでアプリ バイナリをテストすると、PIE exe の行末に「PIE」が表示されます。otool -vh MyAppExe

于 2013-05-09T08:40:30.387 に答える
0

Vincent がここで述べたように、PIE-Binary を取得するには:

  • Apple Q&A QA1788に従ってください
  • 展開ターゲットを最小 OS バージョンとして 4.3 に設定します (これは PIE-Binary の要件です)。
  • (欠落しているビット) : PIE バイナリと互換性のないサードパーティ ライブラリがないことを確認してください。そうしないと、すべてのプロジェクトが PIE バイナリ用にビルドされません。
  • 確認する:otool -hv /path/to/MyApp.app/MyApp

これは、Apple が「まだ」PIE-Binary アプリを持つことを強制していないということです。問題は、「彼らはそうするように強制するのか? そしていつ?」ということです。

_oho

詳細: http://blog.hoachuck.biz/blog/2013/06/28/non-pie-binary-app-on-ios-could-lead-to-security-issue/

于 2013-07-18T15:50:39.770 に答える