1. ホーム
  2. ios

[解決済み] Swift 5.1 でコンパイルしたモジュールを Swift 5.1.2 のコンパイラでインポートできない

2022-04-24 10:35:25

質問

フレームワーク(この例ではRxSwift)をXcode 11.0を使ってコンパイルし、伝統的な RxSwift.framework スタイルパッケージ

Xcode 11.0でも11.1でも問題なくインポートできました。

今日、AppleのXcode 11.2のリリースに伴い、アップグレードしたところ、エラーが表示されました。

Swift 5.1 でコンパイルされたモジュールは Swift 5.1.2 コンパイラでインポートできません。

私はSwiftコンパイラのミスマッチには慣れているので、Xcode 11.2を使用してRxSwiftを再コンパイルして続行すればいいことは承知していますが、Swift 5.1の主要な機能は次のとおりです。 モジュールの安定性 .

モジュールの安定性が確保されたので、フレームワークは新しいXcodeのリリースごとに再コンパイルし続ける必要はないだろうという印象を持っていましたが、明らかにそうではありませんね。

何が起こっているのか、説明できる方がいらっしゃいましたら、ぜひお願いします。それとも、Xcode 11.0でコンパイルしたときに、モジュールの安定性を求めることを伝える必要があったのでしょうか?

解決方法を教えてください。

WWDCのビデオを見ると、そのことがよくわかります。 https://developer.apple.com/videos/play/wwdc2019/416/

を設定する必要があります。 ビルド設定 > ビルドオプション > 配布用ライブラリのビルド オプションを はい をフレームワークのビルド設定に追加してください。そうしないと、swift コンパイラは必要な .swiftinterface これは、将来のコンパイラが古いライブラリをロードできるようにするための鍵になります。

これはproject.pbxprojファイルの中で次のように終わります。

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

このフラグを設定すると、Xcode 11.0 (swift 5.1) でコンパイルしたフレームワークを Xcode 11.2 (swift 5.1.2) で使用することができ、すべてが正しく動作しているように見えます。

この質問と回答が、WWDCのビデオを全部見ていない皆さんの参考になれば幸いです。

それでもエラーが発生する場合は、次のページに進んでください。 製品情報 > クリーンビルドフォルダ ビルド をもう一度。