ios simulator - ¿Por qué el simulador de iOS requiere los símbolos i386 y x86_64 aunque solo estoy en un sistema x86_64?
ios-simulator x86-64 (4)
El simulador de iOS puede ejecutar su aplicación en modos de 32 y 64 bits. Esto le permite resolver muchos problemas de 64 bits y asegurarse de que esté listo para armv7 y arm64. Para hacer esto, compila tu aplicación para i386 y x86_64 y requiere las bibliotecas para ambas arquitecturas.
Estoy intentando que una aplicación se ejecute en el simulador que ha tenido algunos problemas para hacerlo antes. No tenemos libjpeg.a construido para i386
, pero sí tiene x86_64
. Esta es la única dependencia que queda, pero me pregunto por qué necesito realmente los símbolos i386
, si estoy ejecutando en un mac x86_64
.
Las aplicaciones de iOS deben ejecutarse en muchas arquitecturas diferentes:
arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator
Mientras estos días he intentado ejecutar Fastlane para obtener la captura de pantalla de iOS, encontré la misma situación: porque hay una biblioteca .a
que contiene solo la arquitectura x86_64
, pero sin la arquitectura i386
, y luego recibí este error:
Undefined symbol(s) for architecture i386
Esto se está ejecutando en el simulador iPhone 8
con iOS 11.4
.
Pero puede forzar que el simulador se ejecute en solo 64-bit
o solo 32-bit
siguiente manera:
Project -> Architectures -> set the value as:$(ARCHS_STANDARD_32_BIT) or $(ARCHS_STANDARD_64_BIT)
en realidad, la arquitectura i386 es para el simulador de iPhone, mientras que la arquitectura x86_64 es para los simuladores de iPad, ambos son compatibles con 32 y 64 bits.