リンクされ埋め込まれたカスタム フレームワークを使用するアプリがあります。アプリは、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からの元の回答に基づいていますここ。
私の場合は、このエラーが発生するのはローマ、これらのフレームワークを生成します(可能な解決策はここ)。また、多くの闘争が起こっていますカルタゴ側。