1. ホーム
  2. ios

[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。

2022-03-15 23:29:48

質問

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

の新しいベータ版を引っ張り出してきました。 CocoaPods を Xcode 12 に対応させました (現在 1.10.0.beta 2)。

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

iOS Simulator 用にビルドされていますが、iOS 用にビルドされたオブジェクト ファイルでリンクされており、アーキテクチャが arm64 の場合です。

を実行すると lipo -info を実行すると、armv7s armv7 i386 x86_64 arm64 と表示されます。

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

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

何が起こっているのでしょうか? もっと簡単なプロジェクトでまだ再現できていません。

解決方法は?

基本的には arm64 をシミュレータ・アーキテクチャのために、自分のプロジェクトとPodプロジェクトの両方から取得します。

  • そのためには、以下のディレクトリに移動します。 ビルド設定 を追加し 任意のiOSシミュレータSDK という値で arm64 内部 除外されたアーキテクチャ .

または

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

    EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
    
    

    では

    にも同じことをしなければなりません。 Podプロジェクト すべての Cocoa ポッドベンダーが、彼らの ポッドスペック .

    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