iphone - Error de compilación de XCTest.framework
objective-c xcode (8)
Estoy usando DropBox Core API en mi aplicación y, por lo tanto, debo incluir el framework XCTest porque, cuando no he agregado el framework XCTest, mi aplicación no se puede conectar a Dropbox, sin embargo, cuando agrego el framework, Obtiene un error al construir para el simulador. ¡No hay nada malo con mi código! Aquí está el error:
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 debería hacer? Si mi framework está dañado, ¿puedes decirme cómo volver a instalarlo? He intentado eliminar y reinstalar Xcode sin suerte.
Acabo de eliminar el archivo "XCTest.Framework" de Project Navigator> Targets> ''Project Name''> Build Phases. Luego, "Producto" (desplegable)> Limpiar. Lo hice por mí!
Agregando a las posibles soluciones para este problema:
Asegúrese de no haber incluido el archivo MyApplicationTests.m
en la lista "Fuentes de compilación" de los objetivos sin prueba del proyecto.
Esto puede suceder cuando limpias carpetas en el disco
y movió las cosas manualmente, por ejemplo.
Project > Targets > MyApplication > Build Phases > Compile Sources
El síntoma más obvio es que obtienes el error XCTest
cuando intente ejecutar su aplicación en el iPhone (o simulador).
XCTest no debe incluirse en el código de su aplicación habitual como se indica
en las otras respuestas también.
Debo añadir una pequeña nota:
Mi proyecto tenía todas las rutas correctas (esas tres predeterminadas) pero el orden era diferente. Establecer el orden correcto (arrastrando la ruta con el mouse en la lista) solucionó el problema.
Estoy de acuerdo con Mike Weller. Probablemente no deba vincularse con el framework XCTest en su código de aplicación real. Retire el marco XCTest. Observe los errores del vinculador y elimine los elementos que hacen referencia al marco. Lave, enjuague, repita.
Si tienes un objetivo de prueba, eso es diferente. Lo que puede suceder fácilmente durante la migración de SenTestKit a XCTest es tener una ruta de búsqueda de framework incorrecta que causa un enlace con el framework de Mac OS X en lugar del marco de iOS. Esto no funciona
Una forma fácil de ver cuál es la configuración correcta de la ruta de búsqueda del marco es crear un proyecto ficticio, abrir la configuración de compilación para el objetivo Pruebas y luego filtrar para "Ruta de búsqueda del marco".
Creo que los caminos de vainilla correctos son:
$(SDKROOT)/Developer/Library/Frameworks (non-recursive)
$(inherited) (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR) (non-recursive)
Ninguno de los anteriores funciona para mí, todavía obtengo el error,
ld: warning: Auto-Linking suministrado ''/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest'', falta la arquitectura requerida i386 en el archivo /Applications/Xcode.app/Contents/Developer/Library/ Frameworks / XCTest.framework / XCTest (2 sectores)
Utilicé la opción de refactorización de XCode 6, convertí mis SenTests correctamente ejecutados en XCTests.
Sin embargo, cuando configuro las rutas de búsqueda de marcos,
$(SDKROOT)/Developer/Library/Frameworks and
$(inherited)
funcionó.
Puede crear su proyecto de marco, que será un proyecto de módulo sin archivos de prueba. Simple desmarque las pruebas al crear el proyecto.
Si tiene un objetivo de prueba, también debe asegurarse de que su Base SDK
esté configurado en iOS 7.0
(o incluso mejor: Latest iOS
más Latest iOS
)
Verifique las rutas de búsqueda del marco para su objetivo principal y su objetivo de prueba. Tenía un montón de basura en el mío
más fácil si crear un nuevo proyecto ios de vista única. ejecute la prueba para ver si se puede ejecutar; de manera predeterminada, falla y luego verifica la ruta de acceso del marco de trabajo en los objetivos principales y de prueba. y compáralo con tu proyecto
ver respuesta por mí brian.clear aquí