web-dev-qa-db-ja.com

Xcode 8ベータ4:「次のバイナリは互換性のないバージョンのSwiftを使用しています」というエラーでビルドが失敗する

新しいXcode 8 beta 4CopySwiftLibsビルドフェーズ中に次のエラーが発生し始めました。

Effective srcDirs: {(

    <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphonesimulator'>,

    <DVTFilePath:0x7f8657d02b20:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/Swift/iphonesimulator'>

)}

エラー:次のバイナリは、互換性のないバージョンのSwiftを使用しています。

/Users/user/Projects/git/iphone-Swift-1/DerivedData/myApp/Build/Products/Debug-iphonesimulator/myApp.app/myApp

/Users/user/Projects/git/iphone-Swift-1/myApp/myAppApi.framework/myAppApi

myAppApiは、いくつかの共有コードを含むワークスペース内のサブプロジェクトです(Alamofireを使用します)。

注意すべき点が1つあります。元々、プロジェクトをSwift 2.2からSwift= 2.3に変換してから、手動で3.0にアップグレードしました。

このエラーの原因は何ですか?

ありがとう!

30
iGA

私は同じ問題を抱えていましたが、どうにかしてfix it

  1. プロジェクトをきれいにします。
  2. プロジェクトを閉じてXcodeを終了します。
  3. 派生データを消去します。
  4. 再びプロジェクトを開くと、そこにあり、すべてが正常に機能しています。

Xcode 8でSwift 3。

67
ossmalpha

コンテナアプリのコードのシナリオがSwift 2.3であり、Xcode 8で新しい拡張機能を作成している場合、この問題も発生します。

上記のシナリオを解決するには...

注:すべてのコードは、失敗せずにコンパイルするために、同じSwift(互換)バージョンである必要があります。

そうは言っても、この問題を解決できる1つの方法は、Swift 2.3に固執し、拡張ターゲットのレガシーSwift Language Version to "Yes"を使用します。

このオプションは、Xcode 8が開いているときに次のように見つけることができます。

  1. Project Navigator(左側)でアプリプロジェクトのルートを選択します
  2. 右側の[ターゲット]セクションで拡張機能を選択します
  3. 拡張機能が選択されたら、ビルド設定タブをクリックします
  4. 下にスクロールしてse Legacy Swift Language Versionを探し、ドロップダウンメニューからYesに設定します。
  5. これでプロジェクトをビルドできます

注:拡張テンプレートは元々Swift 3.にあったため、オーバーライドされたコードを修正する必要がある場合があります。

17
iAmcR

何かする前に...

(プロジェクトと互換性のあるXcode 8.0を使用できる場合)

デフォルトでは、プロジェクトはXcode 3.2互換に設定されています

  • Navigator(左側)でアプリプロジェクトを選択します
  • ユーティリティパネルプロジェクトドキュメントを選択します(右側)
  • プロジェクト形式Xcode 8.0互換に変更します

プロジェクトをビルドしてみてください。

動作しない場合は、提案されている他のソリューションを試してください。

注:エラーを修正してからXcode 3.2互換に戻すこともできますが、動作するはずですが、後で他のビルドの問題が「発生する可能性があります」。

推奨事項:既存のプロジェクトをデバッグする前に。プロジェクトを作成したときにGitリポジトリを作成しなかった場合は、プロジェクトを閉じてプロジェクトファイルのコピーをZipします。

7
ShakeMan

Xcodeを9.3にアップデートした後、同じ問題が発生しました。ビルドフォルダーを削除するだけで問題を修正しました。これを行うには、Command-Option-Shift-Kを使用するか、[Product]-> [Clean]オプションメニューを使用します(スクリーンショットを参照)

You can clean the build folder with Command-Option-Shift-K or in the option menu "Product" -> "Clean"

6
Samir

プロジェクトの埋め込みバイナリを削除して、これを修正しました。これをする:

  1. Xcodeでワークスペース/プロジェクトを開きます。
  2. 実際のプロジェクトファイル([全般]、[機能]などのリボン)に移動します。
  3. [一般]> [埋め込みバイナリ]に移動し、不要なものを選択して削除し、マイナス記号をクリックします。

注1:「リンクされたフレームワークとライブラリ」セクションからそれらを削除する必要はありません(「埋め込みバイナリ」から削除すると自動的に削除されます)。

注2:私は多くの依存関係があり、CocoaPodsを使用しています。 「埋め込みバイナリ」には何もありませんが、「リンクされたフレームワークとライブラリ」セクションには「Pods_ [YourApplicationName] .framework」しかありません。

4

カルタゴ経由でさまざまなライブラリを統合しました。しかし、プロセス中にそれらの一部をココアポッドに切り替え、古い.frameworksプロジェクトターゲットのファイル。

それらを削除すると、ビルドエラーが解決しました。

2
ph1lb4

同じ問題がありました。私の解決策は、「myApp」ディレクトリの名前を「myAppmyApp」に変更してから、アプリを再度実行することでした。新しい「myApp」ディレクトリが作成され、iPhoneでアプリが非常によく動作するようになりました。

あなたの状況との違いはこれかもしれません:私のアプリの名前、たとえば「DerivedData」ディレクトリの「myApp」は「-」と連結されたmyAppでした

たぶんこれはあなたを助けるでしょう。

1
user6832423

Swift 3バージョンのフレームワークを追加した後、同じエラーメッセージが表示されました。

私のターゲットframework search pathはまだSwift 2とSwift 3の同じフレームワークのバージョンであるため、私のプロジェクトはSwift 2.3バージョン。

私にとっての解決策は、プロジェクトフレームワークから古いフレームワークを削除し、そのフォルダー参照をframework search path

0
vmeyer

そこで、1時間のデバッグの後、これまでに見つけた解決策を投稿するだけです。

Xcode 9以降、これはコンパイラログで追跡できます。

コンパイラログの一番下までスクロールすると、この問題は型チェックのクラッシュが原因であることがわかります。

enter image description here

0
Zigii Wong

すべての依存関係をSwift 3に切り替える必要があります。あなたの場合、AlamofireはSwift 3ブランチに切り替える必要があります

0
Martin Romañuk