繁体   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