App Store の問題を送信: サポートされていないアーキテクチャ x86 質問する

App Store の問題を送信: サポートされていないアーキテクチャ x86 質問する

そこで、Shopify API を使用しようとしています。アプリをアーカイブして検証すると問題は発生しませんが、アプリ ストアに送信すると次の問題が発生します。

  1. エラー ITMS-90087: 「サポートされていないアーキテクチャです。実行可能ファイルにサポートされていないアーキテクチャ '[x86_64, i386]' が含まれています。」
  2. エラー ITMS-90209: 「セグメント アラインメントが無効です。SJAPP.app/Frameworks/Buy.framework/Buy のアプリ バイナリには適切なセグメント アラインメントがありません。最新の Xcode バージョンでアプリを再構築してみてください。」(すでに最新バージョンを使用しています。)
  3. エラー ITMS-90125: 「バイナリが無効です。LC_ENCRYPTION_INFO ロード コマンドの暗号化情報が欠落しているか無効であるか、バイナリがすでに暗号化されています。このバイナリは、Apple のリンカーを使用してビルドされていないようです。」
  4. 警告 ITMS-90080: 「実行可能 Payload/..../Buy.framework は位置独立実行可能ファイルではありません。ビルド設定が PIE 実行可能ファイルを作成するように構成されていることを確認してください。」

ベストアンサー1

問題は、Buy フレームワークにシミュレーター (x86_64) と実際のデバイス (ARM) の両方のビルドが含まれていることです。

もちろん、サポートされていないアーキテクチャのバイナリを App Store に送信することは許可されていないため、解決策としては、送信する前に、最終的なバイナリから不要なアーキテクチャを「手動で」削除する必要があります。

ダニエル・ケネットが考案した素晴らしい解決策であり、このスクリプトを提供しますビルドフェーズに追加するには:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

    EXTRACTED_ARCHS=()

    for ARCH in $ARCHS
    do
        echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
        lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
        EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done

    echo "Merging extracted architectures: ${ARCHS}"
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"

    echo "Replacing original executable with thinned version"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done

使用してみましたが完璧に機能しました。

編集: Varrry が投稿した修正されたスクリプトを必ず確認してください。これにはいくつか小さな問題があります。

おすすめ記事