Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

958
Views
Error de Xcode 13: el archivo de entrada [...] se modificó durante la compilación

Xcode 13 me dificulta construir mi proyecto que consta de objetivos con fases de construcción que generan código.

Por ejemplo, una fase de compilación genera el archivo Secrets+Generated.swift simplemente usando un script de shell que repite algún código en ese archivo.

ingrese la descripción de la imagen aquí

La fase de construcción define ese archivo como un archivo de salida. Sin archivo de entrada, sin lista de archivos de entrada y sin lista de archivos de salida, ya que solo se crea/modifica ese archivo.

Casi todo el tiempo al construir el proyecto, la construcción falla:

 error: input file '[ProjectPath]/Secrets+Generated.swift' was modified during the build error: input file '[ProjectPath]/Secrets+Generated.swift' was modified during the build Command CompileSwiftSources failed with a nonzero exit code

¿Alguien ha encontrado ese problema o sabe qué hacer? Intenté alternar la casilla de verificación "Basado en análisis de dependencia", pero eso no ayudó. No tuve ese problema al usar Xcode 12. Es interesante notar el mensaje de error duplicado a pesar de tener solo una fase de compilación que genera ese archivo en particular.

Por cierto. Tengo el mismo problema cuando uso herramientas de generación de código como swiftgen , Sourcery o Cuckoo .

Editar: Aquí están mis fases de construcción: ingrese la descripción de la imagen aquí Las tres fases de compilación marcadas generan un archivo de este tipo. Todos ellos fallan ocasionalmente. No sé si eso marca la diferencia, pero estos se definen solo para un objetivo (Extensión del servicio de notificación), que es una dependencia del objetivo de mi aplicación principal, por lo que se activa solo una vez cuando construyo la aplicación.

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

Desafortunadamente, la solución alternativa propuesta por Copripop no funciona al menos para la configuración con Cuckoo. Pero el error de compilación ocurre mucho menos ahora.

Pero recibí una respuesta oficial de Apple de que este error ocurre como se esperaba porque el archivo de entrada se modifica durante el trabajo de compilación. Según entendí, eso sucede porque las fases de compilación pueden ejecutarse en paralelo. Antes de Xcode 13, se evitaba la ejecución paralela cuando la definición del archivo de salida se ajustaba al archivo de entrada de la siguiente fase con el mismo archivo. Esto parece estar roto en Xcode 13.

Sin embargo, la respuesta contenía una pista sobre cómo resolver el problema para las configuraciones que no son de Cuckoo. Se recomienda utilizar reglas de compilación, que se ejecutan durante la fase de compilación de compilación. Aquí el enlace con un marcador de tiempo para este tema: https://developer.apple.com/videos/play/wwdc2021/10210/?time=379

La regla de compilación se puede definir para que coincida con el archivo de origen mediante la convención de nomenclatura y luego ejecute el script correctamente. Los archivos de salida de las reglas de compilación se establecen automáticamente en la fase de compilación de compilación. Así que esto no debería estar definido allí.

Esperemos que esto ayude a algunas personas a resolver el problema, cuando puedan definir una coincidencia mediante la convención de nomenclatura. No encontré un buen enfoque para Cuckoo.

Por cierto: ya hay un problema abierto para Cuckoo: https://github.com/Brightify/Cuckoo/issues/400

over 4 years ago · Santiago Trujillo Report

0

Estoy depurando un problema similar en R.swift , creo que encontré la causa del problema.

Xcode 13 parece ejecutar las fases de compilación de Run Script durante las compilaciones de índice. Esto puede hacer que un archivo se escriba mediante un pase de índice, en paralelo con una compilación.

Para verificar si esto le está sucediendo, agregue esto a su script de compilación: say $ACTION
En Xcode 12, solo dice "construir", pero en Xcode 13 lo escucho decir "indexbuild" durante la compilación, cada vez que guardo archivos .swift o navego por mi código.

Para evitar que su secuencia de comandos se ejecute durante la indexación, agregue esta verificación:

 if [ $ACTION != "indexbuild" ]; then # your script here fi
over 4 years ago · Santiago Trujillo Report

0

Tenía exactamente el mismo problema. Pude resolverlo cambiando el shell usado de /bin/sh a /bin/zsh . Sin embargo, no me preguntes por qué funciona.

configurando la concha

over 4 years ago · Santiago Trujillo Report

0

Experimenté el mismo problema en el proyecto iOS de WooCommerce , el objetivo agregado que usamos para generar un archivo .swift con secretos en el momento de la compilación.

Este PR parece solucionar el problema. Digo parece porque no lo he experimentado desde entonces, pero tampoco estoy 100% seguro de que el problema haya desaparecido, porque no estaba ocurriendo el 100% de las compilaciones para mí.

Lo que creo que podría haber hecho el truco fue hacer que la definición de los archivos de entrada y salida del script de ejecución de la fase de compilación fuera homogénea. Anteriormente, configuramos las entradas a través .xcfilelist y las salidas a través de la interfaz de usuario de Xcode. Ahora usamos un .xcfilelist para ambos .

Honestamente, esto me parece un error de Xcode 🙊

over 4 years ago · Santiago Trujillo Report

0

EDIT 2: la solución anterior de Tom Lokhorst parece ser la forma correcta de resolver esto: https://stackoverflow.com/a/69481200/12117100

EDITAR: Hay un problema con la solución original. Los usuarios de Xcode 12.5 que intenten compilar el objetivo de prueba obtendrán el error Build input file cannot be found... ya que el script que genera GeneratedMocks.swift podría ejecutarse después de que comience la compilación.

Algo que parece funcionar tanto para Xcode 12.5 como para Xcode 13 es agregar esto a un cuckoo-output.xcfilelist (llámelo como quiera):

 ${PROJECT_DIR}/${PROJECT_NAME}Tests/GeneratedMocks.swift

y agregue esa xcfilelist a las listas de archivos de salida del script de ejecución en lugar de agregar la ruta a GeneratedMocks.swift directamente en los archivos de salida.

Original:

Tuve este problema después de configurar Cuckoo por primera vez en Xcode 13 e incluir ${PROJECT_DIR}/${PROJECT_NAME}Tests/GeneratedMocks.swift en la sección Archivos de salida del script Ejecutar.

Eliminar la ruta de los archivos de salida parece funcionar por ahora.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!