Comment corriger l'erreur Xcode "building for iOS Simulator, but linking in object file built for iOS, for architecture arm64" ?

Xcode est l'environnement de développement incontournable lorsqu'on développe des applications pour l'écosystème Apple (iOS ou macOS). Chaque nouvelle version intègre des nouveautés supplémentaires afin notamment de prendre en charge les nouveautés des systèmes d'exploitation et matériels Apple. C'est ce changement de version qui est la cause du message d'erreur "building for iOS Simulator, but linking in object file built for iOS, for architecture arm64".

Depuis la version 12, Xcode prend en charge l'architecture "arm64". Cette nouvelle architecture est prise en charge car il s'agit de l'architecture des nouveaux processeurs Apple Silicon. Si vous souhaitez compiler un code avec une version plus ancienne de Xcode, vous allez devoir supprimer cette architecture des cibles de la compilation. Pour effectuer ce réglage, vous pouvez passer par l'interface de Xcode. Rendez-vous dans les paramètres de l'environnement de développement et cliquez sur "Build Settings". Ajoutez la variable "Any iOS Simulator SDK" avec la valeur "arm64" dans la section "Excluded architecture".

Si vous utilisez plutôt les fichiers de configuration "XCConfig", il existe une ligne de configuration pour exclure l'architecture "arm64".

EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

Vous devrez également modifier la configuration des pods. Cette étape est à réaliser le temps que les pods aient été mis à jour par leurs développeurs. Pour chaque pod, ajoutez ces lignes dans le fichier "Podspec".

s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }

Ensuite, vous devez également effectuer la configuration de Xcode à partir du menu "Build Settings", mais la commande "pod install" peut écraser le paramétrage. Si jamais cela se produit, vous pouvez ajouter des instructions dans le fichier "Podfile", cela va rajouter le paramétrage à chaque appel de la commande "pod install".

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end

iOS / Mac