34 votes

Erreur de compilation XCTest.framework

Je suis à l'aide de la boîte de dépôt d'API de Base de mon application et, par conséquent, je dois inclure la XCTest cadre, parce que, quand je n'ai pas ajouté le XCTest cadre, mon application ne peut pas se connecter à dropbox, mais quand je dois ajouter que le cadre, j'obtiens une erreur lors de la construction pour le simulateur. Il n'y a rien de mal avec mon code! Voici le message d'erreur:

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)

Que dois-je faire? Si mon cadre est corrompu, pouvez-vous me dire comment faire pour le réinstaller? J'ai essayé de supprimer et de réinstaller Xcode avec pas de chance.

51voto

Ray Fix Points 1418

Je suis d'accord avec Mike Weller. Vous ne devriez probablement pas être lier à la XCTest cadre dans le code de l'application. Supprimer XCTest cadre. Regardez les liens les erreurs et enlever les choses qui sont de référencement sur le cadre. Laver, rincer, répéter.

Si vous avez un test de la cible, ce qui est différent. Ce qui peut facilement se produire lors de la migration de SenTestKit à XCTest est d'avoir le mauvais cadre de recherche de chemin qui provoque la liaison à l'encontre de Mac OS X permettant au lieu de l'iOS cadre. Cela ne fonctionne pas.

Un moyen facile de voir ce que le bon cadre le chemin de recherche des paramètres est de créer un mannequin projet, ouvrez les paramètres de construction pour les Essais de la cible, puis filtrer pour "Cadre de Recherche de Chemin."

Je pense que la bonne vanille chemins d'accès sont:

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

9voto

Webdevotion Points 513

Ajouter à la liste des solutions possibles à ce problème:

Assurez-vous de ne pas inclure le MyApplicationTests.m fichier
dans le projet de non-essais cibles "de la Compilation des Sources" de la liste.

Cela peut se produire lorsque vous nettoyer les dossiers sur le disque
et déplacé les choses autour manuellement par exemple.

Project > Targets > MyApplication > Build Phases > Compile Sources

Le symptôme le plus évident est que vous obtenez l'erreur XCTest
lorsque vous essayez d'exécuter votre application sur l'iPhone ( ou simulateur ).

XCTest ne devrait pas être inclus dans votre application régulière de code comme indiqué
dans les autres réponses, aussi bien.

2voto

anthoprotic Points 252

Je viens de retirer le fichier "XCTest.Framework" de Project Navigator> Cibles> 'Nom du projet'> Phases de construction. Ensuite, "Produit" (menu déroulant)> Nettoyer. L'a fait pour moi!

1voto

Dirty Henry Points 2382

Si vous avez une cible de test, vous devez également vous assurer que sa Base SDK est définie sur iOS 7.0 (ou même mieux: Latest iOS )

1voto

avuthless Points 506

Je devrais ajouter une petite note:

Mon projet avait tous les chemins corrects (ces trois par défaut) mais l'ordre était différent. Définir le bon ordre (en faisant glisser le chemin avec la souris dans la liste) a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X