Pourquoi le simulateur iOS nécessite-t-il les symboles i386 et x86 64 alors que je suis sur un système x86 64 seulement?
j'essaie de faire fonctionner une application sur le simulateur qui a eu quelques problèmes auparavant. Nous n'avons pas libjpeg.construit pour i386
, mais il a x86_64
. C'est la seule dépendance qui reste, mais je me demande pourquoi j'ai besoin de i386
Symboles, si je cours sur un x86_64
mac.
4 réponses
le simulateur iOS peut faire fonctionner votre application en mode 32 et 64 bits. Cela vous permet de travailler sur un grand nombre de problèmes 64 bits et assurez-vous qu'il est prêt pour armv7 et arm64. Pour ce faire, il compile votre application pour i386 et x86_64 et nécessite les bibliothèques pour les deux architectures.
en fait, i386 l'architecture est pour le simulateur d'iPhone, où que x86_64 l'architecture est pour les simulateurs iPad, les deux sont compatibles 32 et 64bit.
Les Applications iOS doivent fonctionner sur de nombreuses architectures différentes:
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
alors que ces jours-ci j'ai essayé de lancer Fastlane pour obtenir la capture d'écran iOS, j'ai trouvé la même situation:parce qu'il y a .a
bibliothèque contient seulement x86_64
l'architecture,mais sans i386
l'architecture,et puis j'ai eu cette erreur:
Undefined symbol(s) for architecture i386
C'est en cours d'exécution sur iPhone 8
simulateur avec iOS 11.4
.
mais vous pouvez forcer le simulateur à fonctionner sur 64-bit
ou seulement 32-bit
comme suit:
Project -> Architectures -> set the value as:$(ARCHS_STANDARD_32_BIT) or $(ARCHS_STANDARD_64_BIT)