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.

Futur
fonte

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.

Mark Suman
fonte
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.

slf
fonte
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)

Futur
fonte
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.

aimacworx
fonte
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.

respectTheCode
fonte
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.

Stuart
fonte
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.

Gunther
fonte
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
john.k.doe
fonte
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.

Dmitry
fonte
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

Mahmoud Fayez
fonte
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.

Steve
fonte
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.

user944031
fonte
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.

hilla
fonte
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.)

orlanthi
fonte
1

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

rjobidon
fonte
1

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

Martijn Mellens
fonte
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.

A ervilha vermelha
fonte
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.

Alessandro Ornano
fonte
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.
Rajesh Maurya
fonte
0

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

Renetik
fonte
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.

iwasidiotic
fonte
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

Vishwas Singh
fonte
-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>
ScottyBlades
fonte