iOSシミュレータ用のXcodeビルドですが、iOS用にビルドされたオブジェクトファイル(アーキテクチャ「arm64」用)にリンクしています。質問する

iOSシミュレータ用のXcodeビルドですが、iOS用にビルドされたオブジェクトファイル(アーキテクチャ「arm64」用)にリンクしています。質問する

iOS 14 に備えて、Xcode 12 (ベータ 5) で大規模な (Xcode 11 で作業中の!) プロジェクトをビルドしようとしています。コードベースは以前は Objective-C でしたが、現在は Objective-C と Swift の両方が含まれ、Objective-C や Swift のポッドも使用しています。

新しいベータ版をリリースしましたココアポッドXcode 12 をサポート (現在は 1.10.0.beta 2)。

Pod のインストールは成功しました。ビルドを実行すると、Pod フレームワークで次のエラーが発生します。

iOS シミュレータ用にビルドされていますが、iOS 用にビルドされたオブジェクト ファイルにリンクされています (アーキテクチャ: arm64)

また、次のエラーも発生する可能性があります:

ターゲット 'arm64-apple-ios11.0' の標準ライブラリをロードできません

lipo -infoフレームワークで実行すると、armv7s armv7 i386 x86_64 arm64 になります。

以前は、プロジェクトの有効なアーキテクチャはarmv7、armv7s、arm64 に設定されていました。

Xcode 12 では、Apple のドキュメントにあるように、その設定はなくなりました。アーキテクチャは $(ARCHS_STANDARD) に設定されています。除外アーキテクチャには何も設定していません。

ここで何が起こっているのでしょうか? まだ、より単純なプロジェクトでこれを再現できていません。

ベストアンサー1

arm64基本的に、プロジェクトと Pod プロジェクトの両方からシミュレータ アーキテクチャを除外する必要があります。

  • これを行うには、プロジェクトのビルド設定に移動し、 Excluded Architecture内に値を含むAny iOS Simulator SDKを追加します。arm64

    ここに画像の説明を入力してください

または

  • カスタムXCConfigファイルを使用している場合は、シミュレータ アーキテクチャを除外するためにこの行を追加するだけです。

    EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
    

    それから

    すべての Cocoa pod ベンダーがPodspecに以下を追加するまで、 Pod プロジェクトに対しても同じことを行う必要があります。

    s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    

    Pod プロジェクトのビルド設定で除外アーキテクチャを手動で追加できますが、 を使用すると上書きされます。pod install

    代わりに、 にこのスニペットを追加できます。を実行するたびに、必要なビルド設定Podfileが書き込まれます。pod install

    post_install do |installer|
      installer.pods_project.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      end
    end
    

おすすめ記事