Advertencia de Xcode: "Múltiples comandos de compilación para el archivo de salida"

494

Recibo un error como este:

[ADVERTENCIA] Advertencia: múltiples comandos de compilación para el archivo de salida /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[ADVERTENCIA] Advertencia: Múltiples comandos de compilación para el archivo de salida /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[ADVERTENCIA] Advertencia: múltiples comandos de compilación para el archivo de salida /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

Pero he comprobado Xcode y no veo ningún duplicado de dichos archivos. Como dice esta publicación en las listas de correo de Apple, no hay duplicados.

Futur
fuente

Respuestas:

809

En el Navegador de proyectos, seleccione su archivo de proyecto Xcode. Esto le mostrará la configuración del proyecto, así como los objetivos del proyecto. Mire en la fase de compilación "Copiar recursos del paquete". Debería encontrar los archivos ofensivos en esa lista dos veces. Eliminar la referencia duplicada.

Xcode se queja de que está intentando agrupar el mismo archivo con su aplicación dos veces.

Mark Suman
fuente
1
Me sucede cuando eliminé algunos activos de la carpeta de compilación (usando Finder). Los activos se reemplazan por aquellos actualizados con los mismos nombres y arrastrándolos dentro de XCode marcando las opciones "agregar al objetivo". Parece que XCode no está sincronizado duplicando esas entradas en Copy Bundle Resources
brainondev
1
Quería agregar una cosa a esto. Si terminas con una tonelada de referencias duplicadas de alguna manera (como lo hice), simplemente haz clic en "Validar configuración" y eliminará automáticamente las referencias duplicadas. Mucho más fácil que buscarlos manualmente
Jon Mattingly
1
Tuve un problema similar. Esta respuesta fue la más cercana. El archivo <projName> .xcodeproj / project.pbxproj tenía entradas duplicadas a pesar de que el proyecto mostró los archivos solo una vez. Este fue un problema de fusión. editar con vi hizo el truco :) Gracias por señalarme en la dirección correcta :)
javatarz
11
Vale la pena señalar que si tiene una gran cantidad de archivos duplicados en la fase Copiar recursos de paquete, puede hacer clic en 'Validar configuración' en la parte inferior de esta página y XCode le preguntará acerca de los duplicados y los eliminará todos si hace clic en ' Realizar cambios ". Un infierno mucho más rápido que cazarlos individualmente.
Yeti42
1
Tuve un problema similar con las plantillas SpriteBuilder cuando volví a agregar el "iOS publicado" al proyecto. Resulta que quiere que sea una "referencia de carpeta" y no un grupo, y agregó esa carpeta completa en "Copiar recursos de paquete". Por lo tanto, incluso si el recurso individual no aparece en esa lista, verifique que no se agregue desde una carpeta.
samkass
127

Esto se produce fácilmente cuando agrega subproyectos basados ​​en git. Xcode no es lo suficientemente inteligente como para ignorar la subcarpeta .git a pesar de que no se puede ver desde el buscador, por lo que se confundirá que haya varios archivos llamados "master" o "exclude" (archivos estándar de repositorio de git). Con Xcode4, vaya al proyecto (raíz del árbol de la izquierda), luego haga clic en el destino de su aplicación y expanda "Copiar recursos de paquete", luego elimine todas las referencias a .git, de todos modos no debería necesitarlas en su aplicación.

slf
fuente
43
Peleé por un segundo, así que esto puede ayudar a alguien: objetivo de la aplicación -> fases de compilación -> copiar recursos del paquete
jaime
2
Tenía varios archivos con el mismo nombre (pero en diferentes directorios) en mi proyecto Xcode. Accidentalmente, uno de mis dos los tuvo en el paso Copiar recursos del paquete, lo que resultaría en que uno de ellos se sobrescribiera en el paquete de aplicaciones resultante. Solo quita uno de ellos.
BastiBen
112

En realidad, la respuesta a esto es bastante simple.

En su proyecto Xcode, busque los archivos que generan la advertencia y simplemente elimine uno de ellos.

Xcode mostrará solo una referencia de ese archivo en los resultados de búsqueda, pero no se detenga allí, continúe y elimínelo. (es mejor hacer una copia de seguridad de su archivo de proyecto antes de eliminarlo)

Ahora construya el proyecto nuevamente. La advertencia debería desaparecer ahora. (esta respuesta es para una versión anterior de xcode)

Futur
fuente
Pero los archivos ya no aparecen en los grupos de XCode y en el panel de archivos. ¿Cuál es el problema con esto?
Tejaswi Yerukalapudi
1
Si continúa teniendo problemas con esto, simplemente elimine todos los archivos de Xcode (no los elimine del disco). Luego, arrástrelos nuevamente. Si aún tiene problemas después de eso, en realidad tiene algunos recursos con el mismo nombre (tal vez en diferentes carpetas): busque y cambie el nombre / elimine. La salida de Xcode va a una carpeta plana, por lo que se ignora la estructura del directorio.
n13
52

Este no es un error de Xcode, aunque el mensaje de advertencia no es lo suficientemente útil como para describir la causa real.

Este mensaje de error aparece cuando tiene varios archivos en su proyecto que tienen el mismo nombre. Solo tiene que eliminar o cambiar el nombre de los archivos con nombres duplicados y el problema está resuelto.

aimacworx
fuente
1
Sí, esta es la respuesta correcta. Y la situación puede llegar fácilmente cuando tiene archivos de recursos, por ejemplo, pngs con el mismo nombre pero en directorios separados en su sistema de archivos; durante el proceso de compilación, todos se copian en 1 directorio, es decir, el paquete de aplicaciones.
Brynjar
@Brynjar, ¿hay alguna solución para permitir imágenes con el mismo nombre? o para evitar que las imágenes se agrupen?
Andy
En realidad, descubrí que puedes crear referencias de carpeta para evitar la agrupación.
Andy
Aquí hay una manera de encontrar archivos con nombre duplicado, sin importar el directorio find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort, sin embargo, esto no resolvió mi problema
William Entriken
26

Esto sucede si tiene 2 archivos con el mismo nombre en el proyecto. Aunque los archivos están en grupos en XCode cuando se compila el proyecto, todos los archivos terminan en el mismo directorio. En otras palabras, si tiene /group1/image.jpg y /group2/image.jpg, el proyecto compilado solo tendrá uno de los dos archivos image.jpg.

respectTheCode
fuente
17

Como se mencionó anteriormente, este problema se puede ver si tiene varios archivos con el mismo nombre, pero en diferentes grupos (carpetas amarillas) en el navegador del proyecto. En mi caso, esto fue intencional ya que tenía varios subdirectorios cada uno con un "preview.jpg" que quería copiar en el paquete de la aplicación:

referencias grupales

En esta situación, debe asegurarse de que Xcode reconozca la referencia del directorio (icono de carpeta azul), no solo los grupos.

Elimine los archivos ofensivos y elija "Eliminar referencia" (para que no los eliminemos por completo):

eliminar referencias de grupo


Vuelva a agregarlos al proyecto arrastrándolos nuevamente al navegador del proyecto. En el cuadro de diálogo que aparece, elija "Crear referencias de carpeta para cualquier carpeta agregada":

agregar como referencias de carpeta


Observe que los archivos ahora tienen un icono de carpeta azul en el navegador del proyecto:

referencias de carpeta


Si ahora busca en la sección "Copiar recursos del paquete" de las fases de compilación del objetivo, notará que hay una sola entrada para toda la carpeta, en lugar de entradas para cada elemento contenido en el directorio. El compilador no se quejará de los múltiples comandos de compilación para esos archivos.

Stuart
fuente
15

Esto no es un error. Las asistencias de Xcode pueden ayudarlo. Seleccione el objetivo, a la izquierda en el navegador del proyecto. Haga clic en "Validar configuración" en la parte inferior de la configuración. Xcode verificará la configuración y eliminará los duplicados si es posible.

Gunther
fuente
14

otra versión de esta situación puede ocurrir cuando hay duplicados en la fase de compilación de Encabezados .

para arreglar esto …

  1. ve a tu objetivo de proyecto
  2. escoger Build Phases
  3. elige la Headersfase de construcción
  4. ingrese el nombre que se muestra en la advertencia
  5. observe los dos (o más) artículos
  6. encuentra las +|-cajas en la esquina inferior izquierda
  7. seleccione uno de los elementos y haga clic en el -botón
john.k.doe
fuente
7

En mi caso, el problema fue causado por el mismo nombre de destino y carpeta dentro de un grupo.

Simplemente cambie el nombre del archivo o carpeta en conflicto para resolver el problema.

Dmitry
fuente
6

Encontré una solución bastante fácil para esto:

  1. Seleccione el archivo que causa el problema desde el navegador del proyecto
  2. Desmarque la membresía de destino del inspector de archivos
  3. Construye el proyecto
  4. Vuelva a verificar la membresía de destino para el archivo nuevamente

¡La advertencia se fue! Verifique esta imagen como referencia.

ingrese la descripción de la imagen aquí

Mahmoud Fayez
fuente
5

Estoy bastante seguro de que esto puede ser causado por un error de XCode 4, al menos en los casos en que lo he encontrado.

Ocurre si agrega varios archivos dependientes del idioma al proyecto al mismo tiempo. Descubrí esto mirando a través de las diferencias de git. No hice nada en el commit, pero agregué algunos nuevos archivos nib localizados. Pero mirando hacia atrás en la diferencia del archivo project.pbxproj, mostró un montón de nuevas referencias duplicadas agregadas para archivos que ya estaban en el proyecto anteriormente. Los archivos que hizo esto también me parecieron aleatorios.

Reproduje este mismo comportamiento exacto varias veces.

Eliminar estos archivos del proyecto no soluciona el problema porque solo elimina la referencia original y deja los duplicados. La única forma de solucionarlo es retroceder una confirmación y comenzar de nuevo, o editar manualmente el archivo del proyecto, que es una muy buena manera de arruinarlo aún más, ya que es difícil saber qué duplicados eliminar y hay que hacerlo. en un montón de lugares diferentes

Xcode 4 es solo una gran decepción para mí.

Steve
fuente
Parece que esto está arreglado en XCode 4.2. En versiones anteriores, puede evitar este error colocando primero el archivo al que está a punto de agregar localizaciones en su propio "Grupo" (carpeta virtual en el proyecto). Una vez que haya terminado de agregar localizaciones, puede volver a colocarlo donde estaba y eliminar el Grupo temporal que creó.
Steve
Esto no es un error. Se debe a que tiene más de un archivo con el mismo nombre en su proyecto.
Todd Hopkinson
1
Cuando localiza un archivo, se supone que debe tener el mismo nombre de archivo para cada localización, excepto en diferentes directorios. Esto fue de hecho un error.
Steve
4

Esto sucede porque su "no.png" "d.png" y "n.png" están duplicados en los recursos. Simplemente busque eliminar archivos duplicados y eliminar.

usuario944031
fuente
3

El error parece aparecer cuando tiene más de una referencia del mismo archivo. Tenía 2 archivos del mismo nombre y obtuve este error. Cuando borro uno de ellos, el error desaparece.

hilla
fuente
2

Otra variación más sobre este tema. Recibí el mismo mensaje, ninguna de las soluciones sugeridas anteriormente resolvió el problema (definitivamente, solo tenía una copia del archivo ofensivo, por ejemplo).

Mi solución fue editar el archivo project.pbxproj en un editor de texto (después de salir de XCode y hacer una copia de seguridad del archivo, por supuesto) y eliminar todas las referencias al archivo ofensivo. Luego, después de iniciar XCode nuevamente, agregué manualmente el archivo al proyecto y todo estuvo bien.

(Sospecho que este problema me sucedió debido a un manual, es decir: no XCode, fusión del archivo del proyecto).

orlanthi
fuente
1

Abra la carpeta Frameworks en su proyecto y asegúrese de que solo haya marcos dentro. ¡Agregué por error toda la carpeta Developer!

rjobidon
fuente
1

Tuve el mismo problema hace unos minutos. He mencionado que cambiar el 'objetivo de implementación' solucionó mi problema.

Martijn Mellens
fuente
1

Para mí, el Destino> Configuración de compilación> Empaquetado> Nombre del producto se configuró de la misma manera que otro valor al que se hace referencia en un archivo .plist que fue personalizado para mi aplicación. Finalmente, debido a nuestro proceso de compilación, esto crea archivos duplicados.

El guisante rojo
fuente
1
Este fue el problema para mí, ¡gracias!
León
0

Swift 3 : (pero también las versiones anteriores) sucede cuando tengo activos con duplicados. Simplemente cambie el nombre de los archivos con este problema y todo saldrá bien.

También podría suceder cuando haya realizado un cambio de nombre Assets.xcassetsy haya cambiado el nombre de los duplicados con nuevos nombres, así que después de un tiempo lo olvidó y lo eliminó para agregar las referencias de la carpeta, pero este volvió al problema de los archivos duplicados.

Alessandro Ornano
fuente
0

Una de manera simple es,

  • Ir al objetivo de la aplicación
  • Ir a construir fases
  • Archivos de salida
  • Elimine la ruta de salida de los archivos, luego construya el proyecto. Se ejecutará con éxito.
Rajesh Maurya
fuente
0

La clave era hacer pod deintegratey rm *.workspacearchivar! Que perdida de tiempo !

Renetik
fuente
0

Usuarios React-Native. Ir a archivo -> configuración del espacio de trabajo -> sistema de compilación -> cámbielo al sistema de compilación heredado. y debería construir bien ahora. React-Native aún no es compatible con el nuevo sistema de archivos.

iwasidiotic
fuente
0

Comentando use_frameworks! en PodFile funcionó para mí.

#use_frameworks!

Nota: Hizo esto en XCode 10.1, versión de pod 1.8.4

Vishwas Singh
fuente
-1

Si bien estoy seguro de que hay una mejor manera, el ataque nuclear solo me llevó menos de 60 segundos, y fue lo único que pude encontrar que funcionó.

  1. Arrastre el repositorio a la papelera.
  2. vuelva a clonar su repositorio.
  3. Configure su repositorio con el seguimiento remoto correcto. git remote add <url.git>ogit remote set-url <url.git>
ScottyBlades
fuente