es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Compilaciones del simulador de Xcode: M1 vs Intel

Algunos de nuestro equipo trabajan en Macs M1, otros en Intel, y la mayoría de nuestra infraestructura de CI sigue siendo basada en Intel. La compilación para el lanzamiento no parece ser un problema, pero me gustaría configurar un ajuste de proyecto único que compile para los simuladores basados en Intel y M1.

Hasta ahora, la única forma de hacer que funcione es agregar arquitecturas excluidas (Any iOS Simulator): arm64 se excluye en Intel, y x86_64 se excluye en M1.

Deseo evitar tener dos objetivos diferentes solo para esto, y cambiar estos ajustes de manera intermitente tampoco es una opción.

Preguntas:
– ¿Hay una mejor manera de configurar esto para que los simuladores de Intel y M1 se compilen con éxito?
– ¿Por qué necesito esta configuración de exclusión de arquitectura de todos modos, dado que “Compilar solo la arquitectura activa” está configurado como Sí? (también lo intenté con No como algunos sugirieron, pero no ayudó).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Construyendo para simulador basado en Intel y M1 en un entorno de proyecto único

    El problema que se presenta es construir una aplicación para el simulador basado en Intel y M1 en un entorno de proyecto único. La solución actual implica el uso de arquitectura excluida, ¿pero hay una mejor forma de configurar esto?

    Una posible solución es tener objetivos específicos para el simulador basado en Intel y M1. Sin embargo, esto puede ser complicado e ineficiente. Otra solución es construir utilizando Binarios Universales, los cuales contienen binarios x86_64 y arm64 en un solo ejecutable. Esto permitirá que el ejecutable corra en Macs basados en Intel y M1.

    Para lograr esto, el proyecto necesita ser configurado para soportar los Binarios Universales. Esto se puede hacer configurando la opción de Arquitecturas de construcción en “Universal” y la opción de Arquitecturas válidas en “x86_64 arm64”. Esto habilitará la generación de un Binario Universal que correrá en sistemas basados en Intel y M1.

    En cuanto a la pregunta acerca de por qué se necesitan arquitecturas excluidas a pesar de que la opción de “Construir solo la arquitectura activa” esté establecida en Sí, la respuesta se encuentra en el hecho de que el tiempo de ejecución del simulador usa la arquitectura del host. Por lo tanto, si la arquitectura del host es Intel, no podrá correr la arquitectura arm64 y viceversa. Por lo tanto, la exclusión es necesaria para evitar errores durante el proceso de construcción.

Comments are closed.