簡體   English   中英

XCTest.framework構建錯誤

[英]XCTest.framework build error

我在我的應用程序中使用了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時沒有運氣。

我同意邁克·韋勒的觀點。 您可能不應該在實際的應用程序代碼中鏈接XCTest框架。 刪除XCTest框架。 查看鏈接器錯誤,並刪除引用框架的內容。 洗滌,漂洗,重復。

如果您有一個測試目標,那就不一樣了。 從SenTestKit遷移到XCTest期間,很容易發生錯誤的框架搜索路徑,從而導致與Mac OS X框架而不是iOS框架進行鏈接。 這行不通。

查看正確的框架搜索路徑設置的一種簡單方法是創建一個虛擬項目,打開“測試”目標的構建設置,然后過濾“框架搜索路徑”。

我認為正確的香草路徑是:

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

添加到此問題的可能解決方案:

確保您沒有包括MyApplicationTests.m文件
在項目的非測試目標的“編譯源”列表中。

當您清理磁盤上的文件夾時,可能會發生這種情況
並手動移動東西。

Project > Targets > MyApplication > Build Phases > Compile Sources

最明顯的症狀是您收到XCTest錯誤
嘗試在iPhone(或模擬器)上運行您的應用程序時。

如所述,XCTest不應包含在常規應用程序代碼中
在其他答案中也是如此。

我剛剛從“項目導航器”>“目標”>“項目名稱”>“構建階段”中刪除了“ XCTest.Framework”文件。 然后,“產品”(下拉)>清潔。 為我做到了!

如果您有測試目標,還應確保將其Base SDK設置為iOS 7.0 (甚至更好: Latest iOS

我應該補充一點說明:

我的項目的所有路徑都正確(三個默認路徑),但是順序不同。 設置正確的順序(通過使用列表中的鼠標拖動路徑)解決了此問題。

檢查您的主要目標和測試目標的框架搜索路徑。 我有很多廢話

創建新的單視圖ios項目最簡單。 運行測試以查看它可以運行-默認情況下失敗,然后檢查主要目標和測試目標中的Framework Searhc Path。 並將其與您的項目進行比較

看到我的答案brian.clear在這里

Apple Mach-O鏈接器(id)警告:為MacOSX構建,但與為iOS構建的dylib鏈接

以上都不適合我,我仍然會收到錯誤消息,

ld:警告:自動鏈接提供的'/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest',文件/Applications/Xcode.app/Contents/Developer/Library/中缺少必需的體系結構i386框架/XCTest.framework/XCTest(2片)

我使用了XCode 6的refactor選項,將正確運行的SenTests轉換為XCTests。

但是,當我將框架搜索路徑設置為時,

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

有效。

您可以創建框架項目,該框架項目將是沒有測試文件的Pod項目。 只需在創建項目時取消選中測試即可。

這可能是一個原因:

如果在兩個目標“ MyApplication”和“ MyApplicationTests”中都鏈接了XCTest框架。 然后,我們確實需要將“ MyApplicationTests”文件中的“ MyApplication”導入為

@testable import FlickrDemo

因此它將創建循環導入,並會導致XCTest框架未找到問題。 一個簡單的解決方案是從“ MyApplication”目標中刪除XCTest框架。

希望這會幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM