Xcode 12.3: iOS シミュレータ用にビルドしていますが、リンクおよび埋め込まれたフレームワークは iOS + iOS シミュレータ用にビルドされています [重複] 質問する

Xcode 12.3: iOS シミュレータ用にビルドしていますが、リンクおよび埋め込まれたフレームワークは iOS + iOS シミュレータ用にビルドされています [重複] 質問する

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

iOS シミュレータ用にビルドされていますが、リンクされて埋め込まれたフレームワーク「My.framework」は iOS + iOS シミュレータ用にビルドされています。

フレームワークはデバイスとシミュレーターの両方用に構築されており (エラーが実際に示しているように)、 を使用してマージされているlipoため、問題なくどこでも実行できるはずです。

何か見落としているのでしょうか? Xcode 12.3 に関連する変更はありますか?

ベストアンサー1

残念ながら、これは実際には正しいエラーであり、フレームワークには iOS と iOS シミュレータ コードが同時に含まれるべきではありません。Apple は、XCFrameworkこの目的で s を使用するように強制しようとしています。Xcode 11 でこれを開始し、制限を強化しました。

これを解決する唯一の正しい方法は、フレームワークを再構築することです。XCフレームワーク簡単に実行できます。

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

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

これはAppleからの元の回答に基づいていますここ

私の場合は、このエラーが発生するのはローマ、これらのフレームワークを生成します(可能な解決策はここ)。また、多くの闘争が起こっていますカルタゴ側

おすすめ記事