O que significa o aviso “Mapeando arquitetura arm64 para x86_64”?

96

Depois de migrar minha estrutura para o Xcode 10 beta (10L176w), comecei a receber avisos como:

Mapeando a arquitetura arm64 para x86_64. Certifique-se de que as configurações de build das arquiteturas e arquiteturas válidas deste destino estejam configuradas corretamente para a plataforma do simulador iOS.

... e:

Mapeando a arquitetura armv7 para i386. Certifique-se de que as configurações de construção das arquiteturas e arquiteturas válidas deste destino estejam configuradas corretamente para a plataforma do simulador iOS.

Apesar desses avisos, a construção e os testes de unidade passam todos OK. Estou usando o Swift 4.2.

Ainda assim, sobre o que são esses avisos?

gentil
fonte
Estou vendo isso ao definir ao tentar construir 64 bits usando apenas ARCHS = $(ARCHS_STANDARD_64_BIT)eVALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Respostas:

101

Vá para Build Settings e faça como mostrado abaixo

insira a descrição da imagem aqui

Hassan Taleb
fonte
5
Eu confirmo, isso funcionou para mim - não sei por que, mas essas configurações foram destacadas em negrito nas configurações de projeto e build de destino. Então eu excluí como mencionado acima (em ambos os lugares!), E isso apenas removeu o destaque em negrito (revertido para os padrões, obviamente), e os avisos sumiram
Nick Entin
23
Só para esclarecer, isso deve ser feito tanto no projeto quanto no destino.
palmi
2
Boa resposta, proponho que esta seja a solução.
Heider Sati
8
Quando eu excluí, nada aparece em Resolvido e eu receboThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal
2
parece não funcionar mais. Estou tendo o mesmo problema que o Crystal está relatando com o Xcode 11 beta 6. A resposta de @ John funciona para mim
Fabian Streitel
70

Consegui silenciar esses avisos alterando minha configuração de Arquiteturas válidas para $(ARCHS_STANDARD)que corresponda à minha configuração de Arquiteturas também.

Estranhamente, isso era exibido como armv7 arm64(em comparação com a configuração padrão de armv7 armv7s arm64), mas defini-lo com esse valor manualmente ainda causava os avisos. Não tenho certeza de qual é o significado disso, mas ainda não notei nenhum problema em meus testes.

John Montgomery
fonte
2
Essa configuração funcionou para mim para uma estrutura "universal" voltada para iOS e macOS.
João,
1
Essa foi a minha solução. Eu defino arquiteturas válidas: $ (ARCHS_STANDARD) em Projeto e em Alvos. Obrigado.
CGN
2
@CGN como vc definiu no projeto? eu defini com sucesso para alvos.
Erum
@Erum: veja 2 capturas de tela abaixo
CGN
27

Você provavelmente tem a configuração de construção VALID_ARCHS ("Valid Architectures") substituída, tanto para o destino quanto para seu projeto. Esta é uma configuração de construção que deve obter seu valor automaticamente com base no destino de execução para o qual você está construindo. Quando você descobrir de onde está vindo essa substituição (a configuração de construção será exibida em negrito quando substituída), selecione-a e pressione a tecla delete para restaurá-la ao valor padrão.

Rick ballard
fonte
2
Eu também vejo esse erro. Eu não cancelei as configurações VALID_ARCHS. Ele contém arm64para depuração e liberação.
funkenstrahlen de
10
Isso parece ser um bug no Xcode 10. Ainda ocorre com as configurações padrão
Kdawgwilk
5
Isso, mas ainda parece aparecer com a versão de lançamento do Xcode 10. Alguém tem alguma atualização sobre isso?
plivesey
1
me2, estava apenas pesquisando sobre isso, mas sem sucesso
MegaManX de
2
Eu precisava ir para todos os meus subprojetos e metas e excluir VALID_ARCHSpara defini-los como padrão e, em seguida, limpar e fechar / abrir o Xcode novamente para que funcionasse totalmente para mim
manman
17

Para o TARGET que relata avisos, altere a configuração de "Arquitetura válida" para:

$(VALID_ARCHS)
x86_64

insira a descrição da imagem aqui

Quanhua Guan
fonte
Melhor resposta com certeza!
Supertecnoboff de
8

Semelhante a outras respostas, consegui remover o aviso alterando $(VALID_ARCHS)(Arquiteturas válidas) para $(ARCHS_STANDARD). A partir daí, limpei todos os dados derivados e reiniciei o Xcode 10.0. Isso fez o aviso desaparecer completamente. Excluir tudo de arquiteturas válidas apenas fez um aviso diferente aparecer ("Nenhuma arquitetura válida encontrada").

jldailey
fonte
1

A solução é mais simples: em arquiteturas válidas, basta substituir arm64 por x86_64 .

Tive um problema semelhante e os três seguintes avisos em meu projeto: Tive um problema semelhante e o seguinte aviso em meu projeto

Minhas arquiteturas válidas originalmente eram Minhas ** arquiteturas válidas ** originalmente eram

Substituindo:

  • armv7 com i386,
  • armv7s com i386,
  • e arm64 com x86_64

(conforme mencionado nos Avisos) foi minha solução. O resultado na configuração da Arquitetura Válida foi:

Substituir armv7 por i386, armv7s por i386 e arm64 por x86_64, conforme mencionado nos Avisos, foi minha solução

Após as substituições, meus três avisos acima desapareceram.

Informações mais profundas sobre as arquiteturas podem ser encontradas aqui: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Acho que a formulação desse aviso no Xcode é um pouco confusa.

CGN
fonte
1

Se você estiver enfrentando problemas no Flutter:

  1. Exclua o Podfile, Podfile.lock, pasta Pods, Runner.xcworkspace, Flutter.framework.

  2. Corra flutter clean.

  3. Corra flutter build ios.
Deepak Ror
fonte
0

Eu estava vendo este aviso quando tentei compilar o código para iOS e Mac OS. Consegui contornar isso fazendo primeiro o que Hassan Taleb sugeriu em sua resposta: limpe as arquiteturas para que apenas as arquiteturas válidas do iPhone estejam lá. E, finalmente, para continuar sendo capaz de construir para Mac OS, passe o mouse sobre as arquiteturas válidas para que um botão de adição apareça. Clique nele e então você pode adicionar configurações separadas para diferentes plataformas conforme necessário, incluindo diferentes arquiteturas de CPU. Para macOS SDK, posso definir minhas arquiteturas válidas para apenas x86_64, se quiser.Para macOS SDK, posso definir minhas arquiteturas válidas para apenas x86_64 se eu quiser

joelliusp
fonte
no Xcode atual não existe mais esta opção.
JBarros35
@lambdapool qual opção você não está vendo? É "Arquiteturas válidas" / "VALID_ARCHS"?
joelliusp
0

Descobri que a maneira mais fácil de resolver isso era abrir o projeto no meu editor de texto, localizar e excluir todas as VALID_ARCHSlinhas.

Jonathan
fonte
0

Eu também estou enfrentando o mesmo problema. Para resolução, acabei de alterar o sistema de compilação de Standard para Legacy e isso resolveu o problema.

Harsh Gupta
fonte
0

Eu vi o mesmo aviso ao construir minha estrutura. Depois de um tempo, notei que esses valores de arquitetura válidos variam dependendo do tipo de dispositivos, independentemente dos valores nas configurações de construção.

Real devices-> arm64 
Simulator devices ->x86-64
simpleDrinker
fonte
-2

se suas [configurações de construção] for armv7 armv7s arm64, exclua armv7s. o aviso será cancelado.

wilson wang
fonte
não se trata apenas de armv7, é um problema geral e sua sugestão não é voltada para o futuro
amok