Aviso do Xcode: “Vários comandos de compilação para o arquivo de saída”


494

Estou recebendo um erro como este:

[WARN] Aviso: Vários comandos de construção para o arquivo de saída /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png

[WARN] Aviso: Vários comandos de construção para o arquivo de saída /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png

[WARN] Aviso: Vários comandos de construção para o arquivo de saída /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png

Mas verifiquei o Xcode e não vejo nenhuma duplicata desses arquivos. Como diz este post nas listas de discussão da Apple, não há duplicatas.

Respostas:


809

No Navegador de projeto, selecione o arquivo do projeto Xcode. Isso mostrará as configurações do projeto, bem como as metas no projeto. Procure na fase de criação "Copiar recursos do pacote". Você deve encontrar os arquivos incorretos nessa lista duas vezes. Exclua a referência duplicada.

O Xcode está reclamando que você está tentando agrupar o mesmo arquivo com seu aplicativo duas vezes.


1
Acontece comigo quando excluí alguns ativos da pasta de compilação (usando o Finder). Recursos substituídos por aqueles atualizados com os mesmos nomes e arrastando-os nas opções de sinalização "adicionar ao destino" do XCode. Parece XCode sai de sincronia duplicar as entradas em Copiar Bundle Recursos
brainondev

1
Eu queria acrescentar uma coisa a isso. Se você acabar com várias referências duplicadas de alguma forma (como eu fiz), basta clicar em "Validar configurações" e ele excluirá automaticamente as referências duplicadas. Muito mais fácil do que procurar manualmente-los para fora
Jon Mattingly

1
Eu tive uma questão semelhante. Essa resposta foi a mais próxima. O arquivo <projName> .xcodeproj / project.pbxproj tinha entradas duplicadas, embora o projeto mostrasse os arquivos apenas uma vez. Este foi um problema de fusão. edição com vi fez o truque :) Obrigado por me apontar na direção certa :)
javatarz

11
É importante notar que, se você tiver uma grande quantidade de arquivos duplicados na fase Copiar recursos do pacote, poderá clicar em 'Validar configurações' na parte inferior desta página e o XCode solicitará as duplicatas e removerá todos eles se você clicar em ' Executar alterações '. Muito mais rápido do que caçá-los individualmente.
precisa saber é o seguinte

1
Eu tive um problema semelhante com os modelos SpriteBuilder quando adicionei novamente o "iOS publicado" ao projeto. Acontece que ele quer ser uma "referência de pasta" e não um grupo, e adicionou toda a pasta aos "Recursos do pacote de cópias". Portanto, mesmo que o recurso individual não apareça nessa lista, verifique se ele não está sendo adicionado a partir de uma pasta.
17334

127

Isso é causado facilmente quando você adiciona subprojetos baseados em git. O Xcode não é inteligente o suficiente para ignorar a subpasta .git, mesmo que você não possa vê-lo no localizador, por isso ficará muito confuso que haja vários arquivos chamados "master" ou "exclude" (arquivos de repositório git padrão). Com o Xcode4, vá para o projeto (raiz da árvore esquerda), clique no destino do aplicativo e expanda "Copiar recursos do pacote" e remova todas as referências ao .git, de qualquer maneira, você não precisará delas.


43
Eu me atrapalhei sobre por um segundo, então isso ajuda pode alguém: alvo app -> fases de construção -> copiar recursos do pacote
jaime

2
Eu tinha vários arquivos com o mesmo nome (mas em diretórios diferentes) no meu projeto do Xcode. Acidentalmente, um dos meus tinha os dois na etapa Copiar Recursos do Pacote, o que resultaria em um deles sendo substituído no pacote de aplicativos resultante. Apenas remova um deles.
BastiBen

112

Na verdade, a resposta para isso é bastante simples.

No seu projeto do Xcode, pesquise os arquivos que geram o aviso e exclua apenas um deles.

O Xcode mostrará apenas uma referência desse arquivo nos resultados da pesquisa, mas não pare por aí, vá em frente e exclua-o. (é melhor fazer um backup do seu arquivo de projeto antes de excluí-lo)

Agora crie o projeto novamente. O aviso deve desaparecer agora. (esta resposta é para uma versão anterior do xcode)


Mas os arquivos não aparecem mais nos grupos e arquivos do XCode. Qual é o problema disso?
Tejaswi Yerukalapudi 7/10/10

1
Se você continuar tendo problemas com isso, basta remover todos os arquivos do Xcode (não os exclua no disco). Em seguida, arraste-os todos de volta. Se você ainda tiver problemas depois disso, na verdade, você terá alguns recursos com o mesmo nome (talvez em pastas diferentes) - encontre e renomeie / exclua. A saída do Xcode entra em uma pasta simples, portanto a estrutura do diretório é ignorada.
n13

52

Este não é um bug do Xcode, embora a mensagem de aviso não seja útil o suficiente para descrever a causa real.

Essa mensagem de erro ocorre quando você possui vários arquivos no seu projeto com o mesmo nome. Você apenas precisa excluir ou renomear os arquivos com nomes duplicados e o problema foi resolvido.


1
Sim, esta é a resposta correta. E a situação pode chegar facilmente quando você possui arquivos de recursos, por exemplo, pngs com o mesmo nome, mas em diretórios separados no seu sistema de arquivos - durante o processo de construção, todos são copiados para 1 dir, ou seja, o pacote de aplicativos.
Brynjar 23/11

@Brynjar, existe uma solução alternativa para permitir imagens com o mesmo nome? ou para impedir que as imagens sejam agrupadas?
24415 Andy

Na verdade, eu descobri que você pode criar referências de pastas para evitar o agrupamento.
25415 Andy

Aqui está uma maneira de encontrar arquivos com nome duplicado, independentemente do diretório find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sortno entanto, isso não resolveu o meu problema
William Entriken

26

Isso acontece se você tiver 2 arquivos com o mesmo nome no projeto. Mesmo que os arquivos estejam em grupos no XCode quando o projeto é compilado, todos os arquivos acabam no mesmo diretório. Em outras palavras, se você tiver /group1/image.jpg e /group2/image.jpg, o projeto compilado terá apenas um dos dois arquivos image.jpg.


17

Como mencionado anteriormente, esse problema pode ser visto se você tiver vários arquivos com o mesmo nome, mas em grupos diferentes (pastas amarelas) no navegador do projeto. No meu caso, isso foi intencional, pois eu tinha vários subdiretórios, cada um com um "preview.jpg" que eu queria copiar para o pacote de aplicativos:

referências de grupo

Nessa situação, você precisa garantir que o Xcode reconheça a referência do diretório (ícone de pasta azul), não apenas os grupos.

Remova os arquivos incorretos e escolha "Remover referência" (para não excluí-los completamente):

remover referências de grupo


Volte a adicioná-los ao projeto, arrastando-os de volta para o navegador do projeto. Na caixa de diálogo exibida, escolha "Criar referências de pasta para todas as pastas adicionadas":

adicionar como referências de pasta


Observe que os arquivos agora têm um ícone de pasta azul no navegador do projeto:

referências de pasta


Se você agora procurar na seção "Copiar recursos do pacote" das fases de construção do destino, notará que há uma única entrada para toda a pasta, em vez de entradas para cada item contido no diretório. O compilador não se queixará de vários comandos de compilação para esses arquivos.


15

Isso não é um bug. As assistências do Xcode podem ajudá-lo. Selecione o destino, à esquerda no projeto Navigator. Clique em "Validar configurações" na parte inferior das configurações. O Xcode verifica as configurações e remove duplicatas, se possível.


14

outra versão dessa situação pode ocorrer quando houver duplicatas na fase de criação de cabeçalhos .

para consertar isso ...

  1. vá para o alvo do seu projeto
  2. escolher Build Phases
  3. escolha a Headersfase de construção
  4. digite o nome mostrado no aviso
  5. observe os dois (ou mais) itens
  6. encontre o +|- caixas no canto inferior esquerdo
  7. selecione um dos itens e clique no -botão

7

No meu caso, o problema foi causado pelo mesmo nome de destino e pasta dentro de um grupo.

Apenas renomeie o arquivo ou pasta em conflito para resolver o problema.


6

Encontrei uma solução bastante fácil para isso:

  1. Selecione o arquivo que está causando o problema no navegador do projeto
  2. Desmarque a associação de destino no inspetor de arquivos
  3. Construa o projeto
  4. Verifique novamente a associação de destino do arquivo novamente

O aviso se foi! Verifique esta imagem para referência.

insira a descrição da imagem aqui


5

Tenho certeza de que isso pode ser causado por um bug do XCode 4, pelo menos nos casos em que o encontrei.

Isso acontece se você adicionar vários arquivos dependentes do idioma ao projeto ao mesmo tempo. Eu descobri isso examinando as diferenças do git. Eu não fiz nada no commit, mas adicione alguns novos arquivos de ponta localizados. Mas, analisando a diferença do arquivo project.pbxproj, ele mostrou várias referências duplicadas adicionadas para arquivos que já estavam no projeto antes. Os arquivos que ele fez isso também pareciam aleatórios para mim.

Reproduzi esse mesmo comportamento exato várias vezes.

A exclusão desses arquivos do projeto não corrige o problema, pois exclui apenas a referência original e deixa as duplicatas. A única maneira de corrigi-lo é retornar um commit e começar novamente, ou editar manualmente o arquivo do projeto, o que é realmente uma boa maneira de estragar tudo, já que é difícil dizer quais duplicatas remover e você precisa fazê-lo em vários lugares diferentes.

Xcode 4 é apenas uma grande decepção para mim.


Parece que isso foi corrigido no XCode 4.2. Nas versões anteriores, você pode evitar esse bug colocando primeiro o arquivo para o qual você está adicionando localizações no próprio "Grupo" (pasta virtual no projeto). Depois de adicionar as localizações, você pode colocá-lo de volta onde estava e excluir o grupo temporário que você criou.
26411 Steve

Isso não é um bug. Isso ocorre por ter mais de um arquivo com o mesmo nome no seu projeto.
Todd Hopkinson

1
Ao localizar um arquivo, você deve ter o mesmo nome de arquivo para cada localização, exceto em diretórios diferentes. Este foi realmente um bug.
22411 Steve

4

Isso acontece porque ur "no.png" "d.png" e "n.png" são duplicados em recursos. Basta procurar excluir arquivos publicados e excluir.


3

O erro parece aparecer quando você possui mais de uma referência do mesmo arquivo. Eu tinha 2 arquivos com o mesmo nome e recebi esse erro. Quando eu apago um deles, o erro desaparece.


2

Mais uma variação sobre esse assunto. Recebi a mesma mensagem: nenhuma das soluções sugeridas anteriormente resolveu o problema (eu definitivamente tinha apenas uma cópia do arquivo incorreto, por exemplo).

Minha solução foi editar o arquivo project.pbxproj em um editor de texto (depois de encerrar o XCode e fazer o backup do arquivo, é claro) e remover todas as referências ao arquivo incorreto. Depois de iniciar o XCode novamente, adicionei o arquivo manualmente ao projeto e tudo estava bem.

(Minha suspeita é que esse problema aconteceu comigo por causa de um manual, ou seja: não XCode, mesclagem do arquivo do projeto.)


1

Abra a pasta Frameworks no seu projeto e verifique se há apenas estruturas dentro. Eu adicionei por engano toda a pasta Developer!


1

Eu tive o mesmo problema minutos atrás. Eu mencionei que alterar o 'destino de implantação' corrigiu meu problema.


1

Para mim, o Destino> Configurações de compilação> Empacotamento> Nome do produto foi definido com o mesmo valor de outro valor referenciado em um arquivo .plist personalizado para meu aplicativo. Eventualmente, devido ao nosso processo de criação, isso cria arquivos duplicados.


1
Este foi o problema para mim, obrigado!
Leon

0

Swift 3 : (mas também as versões mais antigas) acontece quando tenho ativos com duplicatas. Apenas renomeie os arquivos com esse problema e tudo vai bem.

Isso pode acontecer também quando você cria um Assets.xcassetse renomeia as duplicatas com novos nomes. Depois, esquece-a e remove-a para adicionar as referências à pasta, mas esta retorna ao problema dos arquivos duplicados.


0

Uma maneira simples é,

  • Ir para o destino do aplicativo
  • Ir para Construir Fases
  • Arquivos de saída
  • Exclua o caminho dos arquivos de saída e construa o projeto. Ele será executado com sucesso.

0

A chave era fazer pod deintegratee rm *.workspacearquivar! Que perda de tempo !


0

Usuários do React-Native. vá para arquivo -> configurações da área de trabalho -> sistema de compilação -> altere-o para sistema de compilação herdado. e deve construir bem agora. O React-Native ainda não é compatível com o novo sistema de arquivos.


0

Comentando use_frameworks! no PodFile funcionou para mim.

#use_frameworks!

Nota: Isso foi feito no XCode 10.1, pod versão 1.8.4


-1

Embora eu tenha certeza de que existe uma maneira melhor, as armas nucleares levaram apenas menos de 60 segundos e foi a única coisa que pude encontrar que funcionou.

  1. Arraste o repositório para o lixo.
  2. clone novamente seu repositório.
  3. configure seu repositório com o rastreamento remoto correto. git remote add <url.git>ougit remote set-url <url.git>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.