1. ホーム
  2. ios

[解決済み] Xcode 12.3です。iOS Simulator用にビルドしたのに、リンクや組み込みフレームワークがiOS + iOS Simulator用にビルドされていた【重複】。

2022-04-22 08:16:50

質問

リンクして埋め込まれたカスタムフレームワークを使用したアプリがあります。このアプリは、Xcode 12.2 までは iOS デバイスとシミュレーターで適切にビルドされていました。しかし、Xcode 12.3からは、以下のエラーが発生するようになりました。

Building for iOS Simulator, but the linked and embedded framework 'My.framework' was built for iOS + iOS Simulator.

フレームワークは、デバイスとシミュレータの両方に対してビルドされ(実際にエラーになるように)、次のようにマージされます。 lipo だから、どこでも問題なく実行できるはずです。

何か見落としがあるのでしょうか?Xcode 12.3では、何か関連する変更があるのでしょうか?

解決方法は?

これは正しいエラーで、フレームワークにiOSとiOSシミュレータのコードが同時に含まれてはいけないのです。Appleは私たちに XCFramework を使用します。XCode 11で始めて、制限を厳しくしただけです。

これを解決する唯一の正しい方法は、フレームワークを XCFramework . これは簡単にできます。

$ xcrun xcodebuild -create-xcframework \
    -framework /path/to/ios.framework \
    -framework /path/to/sim.framework \
    -output combined.xcframework

を組み合わせて始めることができます。 .framework フレームワークのコピーを2つ作成し lipo を使用して、異なるSDKに関連するスライスをバイナリから削除します。

アップル社からの回答(原文ママ)に基づく こちら .

私の特別なケースは、これらのフレームワークを生成するRomeを使用してこのエラーが発生することです(可能な解決策は ここで ). また、いろいろと苦労しているのは カルタゴ側 .

お役に立てれば幸いです;)