web-dev-qa-db-ja.com

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

Xcode 11.0を使用して従来のRxSwift.frameworkスタイルパッケージにコンパイルしたフレームワーク(この場合はRxSwift)があります

これは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.2にバグがありますか?または、もともとXcode 11.0でコンパイルしたときに、モジュールの安定性が必要であることをなんとかして伝える必要がありましたか?

87
Orion Edwards

OK、あなたがWWDCビデオを見るとわかります、彼らはそれを説明します: https://developer.Apple.com/videos/play/wwdc2019/416/

Build Libraries for DistributionオプションをYesに設定する必要がありますフレームワークのビルド設定。それ以外の場合、Swiftコンパイラーは、古いライブラリーをロードできる将来のコンパイラーの鍵となる必要な.swiftinterfaceファイルを生成しません。

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

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

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

うまくいけば、この質問/回答は、すべてのWWDCビデオを視聴したことがないすべての人に役立つリファレンスになるでしょう

それでもエラーが解決しない場合は、Product>Clean Build FolderおよびBuild再び。

87
Orion Edwards

同じ問題が発生し始め、誤ったxcodeコマンドラインツールを使用していることがわかりました。 Preferences> Locationsに移動し、コマンドラインツールをXcode 11.1から11.2.1に変更しました。安全のために、派生データディレクトリもクリアしてcarthage build

2
CocoaNuts

サードパーティのライブラリのインポートで同じエラーが発生しました。 Xcodeのツールチェーンを使用して修正し、2019年9月19日のリリースをここから取得しました https://Swift.org/download/#releases 。その後、ライブラリを再インポートする必要があり、それが機能しました。

1
Sergio

Carthageを使用してRxSwiftフレームワークを追加できます。

基本的に、Carthageは同様の従来のRxSwift.frameworkスタイルパッケージを提供します。

次に、carthage update --no-use-binaries

0
iMoeNya

これにより、コンパイラエラーが解消されました。

  1. carthage bootstrap --platform ios
  2. brew bundle
  3. pod repo update
0
Rinni