web-dev-qa-db-ja.com

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

インストルシトンに従ってサードパーティアプリのプロジェクトへの統合を実装しようとしています https://github.com/Paytm-Payments/Paytm_iOS_App_Kit/tree/master/Swift/BitCodeDisabled/PaytmNativeSDK

ビルドで次のエラーが表示されます

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

ツールチェーンを試しました https://medium.com/xcblog/switching-Swift-versions-inside-xcode-using-toolchains-755b28831c4 エラーの理由:互換性のないライブラリバージョン:PaytmNativeSDKにはバージョン1.0が必要です.0以降、ただしlibswiftCore.dylibはバージョン0.0.0を提供します

XCodeまたはライブラリを設定してそれを機能させるにはどうすればよいですか。ベンダーがSwift 5.0のライブラリを更新し、PODで利用できるようにすることはできません。

35
appbootup

Carthageユーザーの場合: Xcode 10.2にアップグレードした後、Carthageを使用してインポートしていたフレームワークで同じ問題に遭遇しました。

私はフレームワークを再構築することでそれを解決しました:

carthage update --no-use-binaries --platform iOS
17
Mike Taverne

正しい解決策は、Xcode 10.1をダウンロードしてApple patchバグ修正を待つ)です。

サードパーティのバグの修正に時間を無駄にしないでください。


私のプロジェクトの問題は、Carthageによる更新に失敗したAlamofireを使用していることです。

7
Yi Jiang

Swift 4.2(Xcode 10.2は引き続きサポートする必要があるため、Swift言語バージョン)に設定しました)を使用したかったのですが、それでもエラーが発生しましたSwift 5.0コンパイラについて。ビルドフォルダー、派生データなどのすべてをクリアしようとした後、Xcode 10.2では機能しないという結論に達しました。

ダウンロードできるXcode 10.1に戻しました here 。これは機能します。 Appleがこのバグを修正するまでは、Xcode 10.1にとどまることを余儀なくされます。

2

フレームワークの開発者は、Xcode 10.2に組み込まれているアップデートを提供する必要があります。

フレームワーク開発者向けの説明:
フレームワークをXcode 10.2で作成した場合でも、CIで使用されるデフォルトのバージョンで作成した場合でも、ユーザーはこのようなエラーに遭遇する可能性があります。 Xcode 10.2がデフォルトのコマンドラインツールであることを確認してください。コマンドxcodebuild -versionを使用して、ターミナルで確認できます。デフォルトのバージョンはXcode -> Preferences -> Locations -> Command Line Toolsで調整できます。

2
Caglar Uslu

これは、4.2コンパイラを使用してビルドされたプロジェクトに外部ライブラリがある場合に発生しますが、新しいXcodeは5.0コンパイラでプロジェクトをビルドしようとします。

私の場合、Carthageを使用してインポートしたライブラリはほとんどありませんでした。幸いにも、私が使用したライブラリは、過去数日間にSwift 5.0コンパイラと互換性のあるアップデートをリリースしました。これらの外部ライブラリがSwift 5.0今のところ運が悪いかもしれません。

途中でまだいくつかの問題に直面している可能性がありますが、これ以上の問題を回避するためのベストプラクティスをいくつか紹介します。

  1. Cartfile.resolvedおよびCarthageフォルダーを完全に削除します
  2. 以前にプロジェクトに追加したライブラリのコピーを必ず削除してください。
  3. ターゲット> Yourapp>一般から埋め込みライブラリとリンクフレームワークとライブラリを削除します。
  4. 製品>ビルドフォルダーのクリーンアップ
  5. カートファイルを更新し、Carthage updateコマンドを使用して新しいソースを取得します
  6. 次に、ライブラリをプロジェクトにインポートします。

うまくいけばうまくいきます。

1
Prav

このライブラリのプロバイダーは、BUILD_LIBRARY_FOR_DISTRIBUTION = YES;(Xcode 11.3のビルド設定->ビルドオプションで利用可能)で再ビルドする必要があります。すでにそれを行うように求められた 対応するGitHubの問題 。その後PaytmNativeSDKは次のすべてのSwiftバージョンと互換性があります。

1
Roman Podymov

Carthageに関する私の問題は、「carthage copy-frameworks」フェーズでバイナリをコピーするxcodeフェーズに関連していました。

https://stackoverflow.com/a/55362536/721929 でコメントされているソリューションとは少し異なるソリューションを用意しています。このソリューションは、依存関係のバージョンも更新する場合があるためです。

というわけで、「カルタゴビルド」を実行しました。また、Carthageのキャッシュクリーンを含めて、サブタスクで発生する可能性のあるエラーを修正しました(私の場合、git cloneで「exit code 1」で失敗します)。

rm -rf ~/Library/Caches/org.carthage.CarthageKit
carthage build --no-use-binaries --platform iOS --verbose
0
kikeenrique

すべての* .frameworkフォルダーを削除し、フェッチして生成してから、新しいフレームワークフォルダーをプロジェクトにインポートします。それが私を助けました。

例えば:

0
Codetard