[英]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在這里
以上都不適合我,我仍然會收到錯誤消息,
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.