¿Qué significa la advertencia "Mapeo de arquitectura arm64 a x86_64"?

95

Después de migrar mi marco a Xcode 10 beta (10L176w) comencé a recibir advertencias como:

Mapeo de la arquitectura arm64 a x86_64. Asegúrese de que las configuraciones de compilación de arquitecturas válidas y arquitecturas de este destino estén configuradas correctamente para la plataforma del simulador de iOS.

... y:

Mapeo de la arquitectura armv7 a i386. Asegúrese de que las configuraciones de compilación de arquitecturas válidas y arquitecturas de este destino estén configuradas correctamente para la plataforma del simulador de iOS.

A pesar de estas advertencias, la compilación y las pruebas unitarias pasan bien. Estoy usando Swift 4.2.

Aún así, ¿de qué tratan estas advertencias?

cortesía
fuente
Veo esto al configurar cuando intento construir 64 bits solo usando ARCHS = $(ARCHS_STANDARD_64_BIT)yVALID_ARCHS = $(inherited) x86_64 i386
Kdawgwilk

Respuestas:

101

Vaya a Configuración de compilación y haga lo que se muestra a continuación

ingrese la descripción de la imagen aquí

Hassan Taleb
fuente
5
Confirmo que esto funcionó para mí, no sé por qué, pero esas configuraciones se resaltaron en negrita tanto en la configuración de construcción del proyecto como de la de destino. Luego eliminé como se mencionó anteriormente (¡en ambos lugares!), Y esto simplemente eliminó el resaltado en negrita (volvió a los valores predeterminados, obviamente), y las advertencias desaparecieron
Nick Entin
23
Solo para aclarar, esto debe hacerse tanto en el proyecto como en el objetivo.
Palmi
2
Buena respuesta, propongo que esta sea la solución.
Heider Sati
8
Cuando lo eliminé, no aparece nada en Resuelto y obtengoThere are no valid architectures to compile for because the VALID_ARCHS build setting is an empty list
Crystal
2
parece que ya no funciona. Tengo el mismo problema que Crystal está informando con Xcode 11 beta 6. La respuesta de @ John funciona para mí en su lugar
Fabian Streitel
70

Pude silenciar estas advertencias cambiando mi configuración de Arquitecturas válidas para $(ARCHS_STANDARD)que coincida también con la configuración de Arquitecturas .

Curiosamente, esto se muestra como armv7 arm64(en comparación con la configuración predeterminada de armv7 armv7s arm64), pero establecerlo en ese valor manualmente aún causaba las advertencias. No estoy seguro de cuál es el significado de eso, pero aún no he notado ningún problema en mis pruebas.

John Montgomery
fuente
2
Esta configuración funcionó para mí para un marco "universal" dirigido tanto a iOS como a macOS.
Juan
1
Esa fue mi solucion. Establecí arquitecturas válidas: $ (ARCHS_STANDARD) en Project y en Targets. Gracias.
CGN
2
@CGN ¿cómo te has configurado en Project? configuré con éxito los objetivos.
Erum
@Erum: vea 2 capturas de pantalla a continuación
CGN
27

Es probable que haya anulado la configuración de compilación VALID_ARCHS ("Arquitecturas válidas"), ya sea para el objetivo o para su proyecto. Esta es una configuración de compilación que debería obtener su valor automáticamente en función del destino de ejecución para el que está compilando. Cuando averigüe de dónde proviene esta anulación (la configuración de compilación se mostrará en negrita cuando se anule), selecciónela y presione la tecla Eliminar para restaurarla al valor predeterminado.

Rick Ballard
fuente
2
También veo este error. No he anulado la configuración VALID_ARCHS. Contiene arm64para depurar y publicar.
funkenstrahlen
10
Esto parece ser un error en Xcode 10. Aún ocurre con la configuración predeterminada
Kdawgwilk
5
Esto, pero todavía parece aparecer con la versión de lanzamiento de Xcode 10. ¿Alguien tiene alguna actualización sobre esto?
Plivesey
1
me2, solo estaba buscando en Google sobre esto, pero fue en vano
MegaManX
2
Necesitaba ir a todos mis subproyectos y objetivos y eliminarlos VALID_ARCHSpara configurarlos por defecto y luego limpiar y cerrar / abrir Xcode nuevamente para que funcione completamente para mí
manman
16

Para el TARGET que informa advertencias, cambie la configuración de "Arquitectura válida" a:

$(VALID_ARCHS)
x86_64

ingrese la descripción de la imagen aquí

Quanhua Guan
fuente
¡La mejor respuesta seguro!
Supertecnoboff
8

Al igual que en otras respuestas, pude eliminar la advertencia cambiando $(VALID_ARCHS)(Arquitecturas válidas) a $(ARCHS_STANDARD). A partir de ahí, borré todos los datos derivados y reinicié Xcode 10.0. Esto hizo que la advertencia desapareciera por completo. Eliminar todo de Valid Architectures acaba de hacer que aparezca una advertencia diferente ("No se encontraron arquitecturas válidas").

jldailey
fuente
1

La solución es más simple: en Valid Architectures simplemente reemplace arm64 con x86_64 .

Tuve un problema similar y las siguientes tres advertencias en mi proyecto: Tuve un problema similar y la siguiente advertencia en mi proyecto

Mis Archtectures Válidas fueron originalmente Mis ** Architecturas válidas ** originalmente eran

Reemplazo:

  • armv7 con i386,
  • armv7s con i386,
  • y arm64 con x86_64

(como se menciona en las Advertencias) fue mi solución. El resultado en la configuración de Arquitectura válida fue:

Reemplazar armv7 con i386, armv7s con i386 y arm64 con x86_64 como se menciona en las Advertencias fue mi solución

Después de los reemplazos, mis tres advertencias anteriores desaparecieron.

Puede encontrar información más detallada sobre las arquitecturas aquí: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/

Creo que la formulación de esta advertencia en Xcode es un poco confusa.

CGN
fuente
1

Si tiene problemas en Flutter:

  1. Elimina Podfile, Podfile.lock, carpeta Pods, Runner.xcworkspace, Flutter.framework.

  2. Corre flutter clean.

  3. Corre flutter build ios.
Deepak Ror
fuente
0

Estaba viendo esta advertencia cuando traté de compilar código para iOS y Mac OS. Pude evitarlo haciendo primero lo que Hassan Taleb sugirió en su respuesta: limpiar las arquitecturas para que solo las arquitecturas de iPhone válidas estén allí. Y finalmente, para seguir siendo capaz de compilar para Mac OS, mueva el mouse sobre las Arquitecturas válidas para que aparezca un botón más. Haga clic en eso y luego puede agregar configuraciones separadas para diferentes plataformas según sea necesario, incluidas diferentes arquitecturas de CPU. Para macOS SDK, puedo configurar mis arquitecturas válidas en x86_64 si quiero.Para macOS SDK, puedo configurar mis arquitecturas válidas en solo x86_64 si quiero

joelliusp
fuente
en el Xcode actual ya no existe esta opción.
JBarros35
@lambdapool ¿Qué opción no ves? ¿Es "Arquitecturas válidas" / "VALID_ARCHS"?
joelliusp
0

Encontré que la forma más fácil de resolver esto era abrir el proyecto en mi editor de texto, luego buscar y eliminar todas las VALID_ARCHSlíneas.

Jonathan
fuente
0

También me enfrento al mismo problema. Para su resolución, acabo de cambiar el sistema de compilación de Estándar a Legacy y eso resolvió el problema.

Harsh Gupta
fuente
0

He visto la misma advertencia mientras construía mi marco. Después de un tiempo, noté que estos valores de arquitectura válidos varían según el tipo de dispositivos, independientemente de los valores en la configuración de construcción.

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

si su [configuración de compilación] es armv7 armv7s arm64, elimine armv7s. la advertencia será cancelada.

wilson wang
fuente
no se trata solo de armv7, es un problema general y su sugerencia no es prospectiva
loco