web-dev-qa-db-ja.com

XCTest.frameworkビルドエラー

私はアプリでDropBox Core APIを使用しているため、XCTestフレームワークを追加する必要があります。XCTestフレームワークを追加していないと、アプリはDropboxに接続できませんが、フレームワークを追加すると、シミュレーターのビルド中にエラーが発生します。私のコードには何も問題はありません!エラーは次のとおりです。

Ld /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop! normal i386
    cd "/Users/Zach/Desktop/SnapDrop!"
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
    setenv PATH "/Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode5-DP6.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Arch i386 -isysroot /Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -L/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Downloads/dropbox-ios-sdk-1.3.5 -F/Users/Zach/Downloads/dropbox-ios-sync-sdk-1-1.1.0 -F/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks -F/Users/Zach/Desktop -filelist /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.1 -framework iAd -framework AssetsLibrary -framework QuartzCore -framework SystemConfiguration -framework Security -framework CFNetwork -framework XCTest -framework Dropbox -framework DropboxSDK -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!_dependency_info.dat -o /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop!

ld: building for iOS Simulator, but linking against dylib built for MacOSX file '/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私は何をすべきか?フレームワークが破損している場合、再インストールの方法を教えてください。 Xcodeを削除して再インストールしようとしましたが、運がありません。

34
user2703123

マイク・ウェラーに同意します。おそらく、実際のアプリコードでXCTestフレームワークにリンクしないでください。 XCTestフレームワークを削除します。リンカーエラーを調べて、フレームワークを参照しているものを削除します。洗い、すすぎ、繰り返します。

テスト対象がある場合、それは異なります。 SenTestKitからXCTestへの移行中に簡単に発生する可能性があるのは、iOSフレームワークではなくMac OS Xフレームワークに対してリンクする間違ったフレームワーク検索パスを持っていることです。これは機能しません。

正しいフレームワーク検索パス設定が何であるかを簡単に確認するには、ダミープロジェクトを作成し、テストターゲットのビルド設定を開いて、「フレームワーク検索パス」をフィルターします。

正しいバニラのパスは次のとおりです。

$(SDKROOT)/Developer/Library/Frameworks     (non-recursive)
$(inherited)                                (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR)                 (non-recursive)
51
Ray Fix

この問題の可能な解決策に追加:

MyApplicationTests.mファイルが含まれていないことを確認してください
プロジェクトの非テスト対象の「ソースのコンパイル」リスト。

これは、ディスク上のフォルダーをクリーンアップしたときに発生する可能性があります
そして、例えば、物事を手動で移動しました。

Project > Targets > MyApplication > Build Phases > Compile Sources

最も明らかな症状は、XCTestエラーが発生することです
iPhone(またはシミュレーター)でアプリを実行しようとしたとき。

述べられているように、XCTestを通常のアプリケーションコードに含めないでください。
他の回答でも。

9
Webdevotion

Project Navigator> Targets> 'Project Name'> Build Phasesから「XCTest.Framework」ファイルを削除しました。次に、[製品](ドロップダウン)> [クリーニング]。私のためにやった!

2
anthoprotic

テスト対象がある場合は、そのBase SDK に設定されています iOS 7.0(またはそれ以上:Latest iOS

1
Dirty Henry

小さなメモを追加する必要があります。

私のプロジェクトではすべてのパスが正しい(デフォルトの3つのパス)がありましたが、順序は異なっていました。 (リスト内でマウスでパスをドラッグして)正しい順序を設定すると、問題が修正されました。

1
avuthless

上記のどれも私にはうまくいきません、私はまだエラーを受け取ります、

ld:警告:自動リンクが提供された '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest'、ファイル/Applications/Xcode.app/Contents/Developer/Library/に必要なアーキテクチャi386がありませんFrameworks/XCTest.framework/XCTest(2スライス)

XCode 6のリファクタリングオプションを使用して、適切に実行されているSenTestsをXCTestsに変換しました。

ただし、フレームワークの検索パスをに設定すると、

$(SDKROOT)/Developer/Library/Frameworks and 
$(inherited)

動いた。

0
karim

メインターゲットとテストターゲットのフレームワーク検索パスを確認します。私は私のがらくたがたくさんあった

新しいシングルビューiosプロジェクトを作成する場合に最も簡単です。テストを実行して実行できることを確認します-デフォルトでは失敗し、メインおよびテストターゲットのフレームワークSearhcパスを確認します。そしてあなたのプロジェクトと比較してください

私の答えをここで見てくださいbrian.clearここ

Apple Mach-Oリンカー(id)警告:MacOSX用に構築されていますが、iOS用に構築されたdylibに対してリンクしています

0
brian.clear

フレームワークプロジェクトを作成できます。これは、テストファイルのないポッドプロジェクトになります。プロジェクトの作成中にテストのチェックを外すだけです。

0
Prakash Raj

これは理由である場合もあります:

ターゲット "MyApplication"と "MyApplicationTests"の両方でXCTestフレームワークをリンクしている場合。次に、「MyApplicationTests」ファイルに「MyApplication」をインポートする必要があります。

@testable import FlickrDemo

したがって、循環インポートが作成され、XCTestフレームワークが見つからないという問題が発生します。簡単な解決策は、「MyApplication」ターゲットからXCTestフレームワークを削除することです。

これが誰かを助けることを願っています。

0
Mohd Haider