1. ホーム
  2. アイオス

[解決済み】App Storeに投稿する問題。サポートされていないアーキテクチャ x86

2022-04-02 19:45:43

質問

ShopifyのAPIを使おうとしています。アプリをアーカイブして検証するときは問題ないのですが、アプリストアに提出すると、次のような問題が発生します。

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

解決するには?

問題は、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

使ってみたらバッチリでした。

EDIT: このスクリプトには細かい問題があるので、Varrryが投稿した修正スクリプトを必ず見てください。