Ciclo adentro; la construcción podría producir resultados poco fiables: Error de Xcode 10


80

Estoy intentando pasar al nuevo sistema de compilación al compilar con Xcode 10. Sin embargo, aparece el siguiente error:

Cycle details:
→ Target 'project' : LinkStoryboards

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex

Target 'project' has process command with input '/Users/project/Resources/Info.plist'

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Captura de pantalla agregada

Incluso después de eliminar el archivo problemático, obtengo lo mismo para otro xib / storyboard. ¿Cómo puedo solucionar este error sin volver al sistema de compilación heredado?


Tuve un error similar y lo solucioné eliminando los 'datos derivados' y el proyecto de limpieza. ¡Esto funcionó como un encanto para mí!
Jayprakash Dubey

Respuestas:


62

Para cualquiera que tenga un problema con el sistema de compilación Xcode 10, siga los siguientes pasos para solucionarlo:

  1. En Xcode, vaya a Archivo-> Proyecto / Configuración del espacio de trabajo.
  2. Cambie el sistema de compilación al sistema de compilación heredado.

Resolverá el problema de compilación con el nuevo Xcode.

Si desea trabajar con el nuevo sistema de compilación, puede encontrar la ayuda para la resolución de problemas en esta página de ayuda de Apple Xcode .


50
El objetivo de la pregunta es pasar al último sistema de compilación.
Sahil Kapoor

4
Entonces debe mencionar que en cuestión no desea una solución con cambiar el sistema de compilación. Además, he mencionado que si desea trabajar con un nuevo sistema de compilación, puede seguir los pasos dados en el centro de soporte de Xcode. Además, proporcione una razón válida cuando vote en contra. ¡Gracias! @SahilKapoor
Akshay Sunderwani

1
Gracias amable extraño. Mi único interés es hacer que mi compilación funcione nuevamente para cumplir una fecha límite, por lo que su respuesta es exactamente lo que necesitaba.
Dan Loughney

6
Ésta no es una solución adecuada al problema. El sistema de compilación no debe cambiarse a Legacy por algo tan simple.
Varun Goyal

38

Estaba teniendo este problema con Cocoapods. La solución fue limpiar la carpeta de compilación, volver a instalar todos los pods y luego reconstruir la aplicación. El problema se resolvió de esa manera.


2
Esto funcionó para mí también. Hice una limpieza y una instalación de pod.
Cloud9999Strife

En mi caso, acababa de hacer una instalación de pod, así que solo tenía que limpiar la carpeta de compilación. Este error solo apareció después de que permití que Xcode actualizara la configuración de compilación.
Stonetip

Tuve el problema con Alamofire. Hice una 'Carpeta de compilación limpia' sin reinstalar ninguna mazorca de cacao y funcionó bien
kite_n_code

25

Solucioné mi problema moviendo la fase de compilación de 'Copiar recursos de paquete' antes de todas mis fases de compilación de 'Copiar archivos' y 'Vincular binarios con bibliotecas'


+1 pero utilicé una ligera variación. No necesitaba adelantarme nada a "Vincular binarios con bibliotecas", lo que no haría porque un nuevo proyecto predeterminado en Xcode no es así. Acabo de mover "Copiar recursos de paquete" por delante de "Copiar herramientas auxiliares" (que copia algunas herramientas de línea de comandos y una aplicación auxiliar en Contenidos / Ayudantes del producto de aplicación macOS). Pero dado que el orden de estos dos debería hacer alguna diferencia, solo están copiando archivos, no tiene sentido. Entonces presenté un error: 42927301. Mi solución modificada: intercambie varias Fases de compilación de Copiar XXX hasta que funcione :(
Jerry Krinock

2
Lo mismo para mí, moví mis Recursos de paquete de copia por encima de la fase Copiar archivos y listo, ahora funciona. Voy a engañar a tu error @JerryKrinock
Peter N Lewis

Para mí, el problema era con las dependencias de Embed Frameworks, así que moví Embed Frameworks arriba de Copiar recursos de paquete, y ayudó.
Elena

19

El nuevo sistema de compilación de Xcode 10 detecta los ciclos de dependencia en su compilación y proporciona diagnósticos para ayudarlo a resolverlos. La reparación de estos ciclos de dependencia mejora la confiabilidad de su compilación, de modo que los productos correctos se produzcan de manera consistente (los ciclos son una posible causa de la necesidad de eliminar sus datos derivados). También mejora sus tiempos de compilación incrementales, ya que los ciclos en la compilación hacen que algo en su gráfico de compilación esté siempre desactualizado en cada compilación, lo que hace que la repetición de compilación funcione innecesariamente cada vez que compila.

Hay documentación sobre cómo resolver algunos tipos comunes de ciclos de dependencia en la Ayuda de Xcode: https://help.apple.com/xcode/mac/current/#/dev621201fb0

Dicho esto, este diagnóstico de ciclo parece un poco extraño. Parece que pudiste resolverlo reorganizando tus fases de compilación, pero no creo que el diagnóstico realmente explicara el problema. Si no le importa, un informe de error sobre cómo mejorar este diagnóstico para este caso particular sería muy apreciado. Puede presentar uno en https://bugreport.apple.com . Incluya todos los detalles sobre su proyecto que crea que pueden ser relevantes; un proyecto de muestra que reproduzca el problema es ideal, pero si no puede adjuntarlo, el diagnóstico y alguna idea de la estructura del proyecto siguen siendo útiles.


18

Tenía este problema con Cocoapods y encontré una solución temporal:

  1. Instale la última versión de cocoapods (1.5.3): sudo gem update cocoapods
  2. Elimina tus datos derivados: rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

Fuente aquí y estoy en Xcode 10 beta 4.

EDITAR : ahora en Xcode 10.0 y sigue siendo relevante.


Me pasó de nuevo la semana pasada en Xcode 10.1 (10B61) y todavía funcionó. Asegúrese de realizar un Clean Build Folder(y salir de Xcode también podría ayudar) antes de seguir los pasos 2.y 3..
gabuchan

¡Trabajado como un encanto!
flagman

15

Tuve un problema similar con una interacción mixta entre Swift, Objective-C y CoreData : en mi proyecto (escrito en Swift) también hice uso de las clases Swift autogeneradas de Core Data.

Pero en un momento necesité una clase Objective C con propiedades públicas (definidas en su contraparte del encabezado) que refirieran las entidades de datos centrales.

#import "ProjectName-Swift.h" // this is to import the swift entities into ObjC

@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

Tan pronto como cambié el modelo de CoreData, XCode intentó reconstruir las clases y me colgué con el error de compilación del ciclo indicado.

Después de un momento inicial de desesperación, como no tenía ninguna fase de encabezado de compilación en mi proyecto para cambiar el orden, descubrí que la solución era bastante simple:

En el myObjCClass.h, eliminé la declaración de importación del encabezado Swift compartido y la cambié con una @classdirectiva:

@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else

// the rest stays the same
@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

y moví la #import "ProjectName-Swift.h"declaración al myObjCClass.marchivo de definición de clase.

#import "myObjCClass.h"
#import "ProjectName-Swift.h"

@implementation myObjCClass

@end

Y no generó preocupaciones.


Vaya, muchas gracias. Estuve luchando toda la noche con esto, pero cuando implementé completamente esta sugerencia, ¡el problema se solucionó!
Erik van der Neut

14

Finalmente pude resolver esto moviendo el Embed App Extensionsscript Build Phasesdel Target principal a la última posición.


Obtuve este error en Xcode 10.0 beta 4 (10L213o): esta solución lo resolvió :-)
StackUnderflow

11

De hecho, solo debe prestar atención al indicador de Xcode This usually can be resolved by moving the target's Headers build phase before Compile Sourcesy luego puede hacerlo.

Cuando encontré este problema, Xcode me pregunta:

:-1: Cycle inside XXXX; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources.
Cycle details:
→ Target 'XXXX': LinkStoryboards
○ Target 'XXXX: Ditto Path/XXXX-Swift.h /Path/XXXX-Swift.h
○ Target 'XXXX has compile command for Swift source files
○ That command depends on command in Target 'XXXX: script phase “Run Script”

Solo hice una cosa y resolví el problema perfectamente:

Seleccione Targety luego seleccione Build Phasepara mover el Run Scriptal frente de Compile Sources.

Ejecutar, compilado con éxito.

El principio es simple, simplemente cambie el orden de compilación.

imagen 1

Xcode 10.2 y Swift 5


2
esto funciona, pero solo una vez y luego, en el siguiente comando de compilación, el problema vuelve.
Swati

6

Estaba enfrentando el mismo problema: a continuación estaba el error

Ciclo en dependencias entre los objetivos 'Pods-MyAppName' y 'RxCocoa'; la construcción podría producir resultados poco fiables. Por lo general, esto se puede resolver moviendo la fase de construcción de Encabezados de destino antes de Compilar fuentes. Ruta del ciclo: Pods-MyAppName → RxCocoa → Pods-MyAppName

Lo resolví usando los siguientes pasos:

1). Ir al objetivo RxCocoa en el proyecto Pods-MyAppName

2) Ir a las fases de construcción

3) Arrastre la fase de encabezados y muévala por encima de la fase de creación de fuentes compiladas.

Esto solucionó mi problema. ¡Espero eso ayude!


6

En el objetivo Scheme, busque la etiqueta Buildy asegúrese de que Find Implicit Dependenciesno esté marcada. Estos pasos pueden funcionar.


Cuando dice "cerrar", ¿quiere decir que debe tener un color y una marca de verificación? ¿O que debería estar vacío, sin una marca de verificación?
Ben Leggiero

1
Hola, @BenLeggiero. "Cerrar" significa que debe estar vacío, sin una marca de verificación.
Nh Xu

3

Mi solución fue simplemente limpiar la carpeta de compilación y luego volver a compilar.


Increíble cómo nadie calificó esta solución. Simple, pero debe ser lo primero que deberíamos intentar antes de profundizar en el tema.
Hoon

3

Mi problema tenía que ver con una dependencia cíclica entre mi encabezado de puente rápido y mis archivos objetivos c.

En mis archivos de encabezado objetivo c tenía un #import "...-swift.h"archivo y luego en un par de mis archivos rápidos estaba incluyendo esos archivos con dicha importación y, por lo tanto, causando una dependencia cíclica.

Este es el StackOverflow que me llevó a encontrar la solución:

Objetivo C, problema de interoperabilidad rápida debido a la dependencia circular

Cómo evitar la referencia circular cuando el encabezado de puente Swift importa un archivo que importa Hopscotch-Swift.h en sí

EDITAR:

Terminé convirtiendo los archivos anteriores a rápido y esto resolvió mi problema.


2

Parece que necesita cambiar el orden de las fases de compilación dentro de los objetivos de sus Pods. Para mí, mover los encabezados por encima del resto funcionó. Puede automatizar esto en su Podfile:

require 'xcodeproj'

post_install do |installer|
  installer.pods_project.targets.each do |target|
    headers_phase = target.build_phases.find { |p| p.kind_of?(Xcodeproj::Project::Object::PBXHeadersBuildPhase) }
    if headers_phase
      puts "#{target.name}: Moving Headers build phase to top"
      target.build_phases.insert(0, target.build_phases.delete_at(target.build_phases.index(headers_phase)))
    end
  end
end

1

El mismo problema Version 10.0 beta 3 (10L201y)y quería tener el nuevo sistema de compilación .

El problema se ha desactivado Enable Modules (C and Objective-C)

en Build Settings -> Apple Clang - Language - Modules

Después de habilitarlo (establecido en SÍ) eliminó el error.


1

Me encontré con un problema similar cuando intenté archivar mi proyecto en Xcode 10. Aquí está el texto detallado:

→ Target 'mytarget': CodeSign /path/to/mytarget.app

○ Target 'mytarget': SetGroup staff /path/to/mytarget.app

○ Target 'mytarget': SetMode u+w,go-w,a+rX /path/to/mytarget.app

○ Target 'mytarget': SetGroup staff /path/to/mytarget.app

Se solucionó estableciendo $(USER)enmytarget -> Build Settings -> Deployment -> Install Owner


1

Core_Data

Tuve el mismo problema y error, pero el mío ocurrió cuando "Creé NSManagedObject Subclass" para mi entidad y me enfrenté a este error. Entonces, si cree que su error es el mismo que el mío sobre Core Data, lo que probablemente pueda ayudarlo (y me ayudó a mí) es:

  • haga clic en su entidad en su archivo "xcdatamodel"
  • vaya a la barra de la derecha, haga clic en Data Model Inspector
  • cambie "Módulo" a "Módulo de producto actual"
  • y finalmente, cambie "Codegen" a "Manual / Ninguno"
  • limpiar y construir

Creo que porque en otros escenarios Xcode crea un archivo automáticamente y cuando creamos otro causa un conflicto.


1

Xcode 10.2.1 / Objetivo de prueba unitario. Mi objetivo de prueba unitaria es independiente del objetivo del host para mejorar el tiempo de construcción. Resolverlo por desmarques Find Implicit Dependenciesen Scheme- Buildopciones, pues especifico en todas las dependencias Build Settings- Compile Sources.


0

Es posible que pueda solucionar esto aquí:

Archivo -> Configuración del espacio de trabajo -> Sistema de compilación: Nuevo sistema de compilación

Configuración del espacio de trabajo


0

Probé cosas de esta página, pero lo único que me ayudó fue que hice una copia del objetivo y actualicé el nombre de la copia (eliminé el sufijo de copia), eliminé el anterior y luego instalé el pod.


0

Me enfrenté a este problema después de actualizar Xcode a la versión 11.4. La degradación a 11.2.1 lo solucionó.


0

Xcode: 11.3.1 Destino: XCUITest target

  1. Ejecute el comando para limpiar la carpeta de compilación: rm -rf ~ / Library / Developer / Xcode / DerivedData / *

  2. Cambiar la configuración del espacio de trabajo: seleccione Sistema de compilación heredado

ingrese la descripción de la imagen aquí


-1

Las siguientes dos opciones funcionaron para mí: Archivo-> Configuración del proyecto / área de trabajo.

1, cambie el sistema de compilación a "Sistema de compilación heredado" en Archivo-> Configuración del proyecto

2, Edite el esquema y seleccione la opción "Construir en paralelo" en la sección Generar.


Eso no está relacionado. El sistema de construcción moderno no causaría esto.
Raptor

-1

En el panel del proyecto en el LHS, para sus productos de compilación, no los seleccione en la lista de miembros de Target en el panel RHS.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.