インストルシトンに従ってサードパーティアプリのプロジェクトへの統合を実装しようとしています 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で利用できるようにすることはできません。
Carthageユーザーの場合: Xcode 10.2にアップグレードした後、Carthageを使用してインポートしていたフレームワークで同じ問題に遭遇しました。
私はフレームワークを再構築することでそれを解決しました:
carthage update --no-use-binaries --platform iOS
正しい解決策は、Xcode 10.1をダウンロードしてApple patchバグ修正を待つ)です。
サードパーティのバグの修正に時間を無駄にしないでください。
私のプロジェクトの問題は、Carthageによる更新に失敗したAlamofireを使用していることです。
Swift 4.2(Xcode 10.2は引き続きサポートする必要があるため、Swift言語バージョン)に設定しました)を使用したかったのですが、それでもエラーが発生しましたSwift 5.0コンパイラについて。ビルドフォルダー、派生データなどのすべてをクリアしようとした後、Xcode 10.2では機能しないという結論に達しました。
ダウンロードできるXcode 10.1に戻しました here 。これは機能します。 Appleがこのバグを修正するまでは、Xcode 10.1にとどまることを余儀なくされます。
フレームワークの開発者は、Xcode 10.2に組み込まれているアップデートを提供する必要があります。
フレームワーク開発者向けの説明:
フレームワークをXcode 10.2で作成した場合でも、CIで使用されるデフォルトのバージョンで作成した場合でも、ユーザーはこのようなエラーに遭遇する可能性があります。 Xcode 10.2がデフォルトのコマンドラインツールであることを確認してください。コマンドxcodebuild -version
を使用して、ターミナルで確認できます。デフォルトのバージョンはXcode -> Preferences -> Locations -> Command Line Tools
で調整できます。
これは、4.2コンパイラを使用してビルドされたプロジェクトに外部ライブラリがある場合に発生しますが、新しいXcodeは5.0コンパイラでプロジェクトをビルドしようとします。
私の場合、Carthageを使用してインポートしたライブラリはほとんどありませんでした。幸いにも、私が使用したライブラリは、過去数日間にSwift 5.0コンパイラと互換性のあるアップデートをリリースしました。これらの外部ライブラリがSwift 5.0今のところ運が悪いかもしれません。
途中でまだいくつかの問題に直面している可能性がありますが、これ以上の問題を回避するためのベストプラクティスをいくつか紹介します。
うまくいけばうまくいきます。
このライブラリのプロバイダーは、BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
(Xcode 11.3のビルド設定->ビルドオプションで利用可能)で再ビルドする必要があります。すでにそれを行うように求められた 対応するGitHubの問題 。その後PaytmNativeSDKは次のすべてのSwiftバージョンと互換性があります。
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