web-dev-qa-db-fra.com

Xcode 12, bâtiment pour simulateur iOS, mais relie au fichier d'objet construit pour iOS, pour Architecture Arm64

Essayant d'obtenir un grand bâtiment de projet (et de travailler sur Xcode 11!) Dans Xcode 12 (bêta 5) à la préparation pour iOS 14. Codebase était auparavant Obj-C, mais contient maintenant obj-C et Swift, et utilise des pods qui sont Obj-C et/ou Swift aussi.

J'ai tiré la nouvelle version bêta des cocoapodes avec support Xcode 12 (actuellement 1.10.0.beta 2).

L'installation de POD réussit. Lorsque je fais une construction, j'obtiens l'erreur suivante sur un cadre de POD:

"Bâtiment pour iOS Simulator, mais relie au fichier d'objet construit pour iOS, pour architecture arm64"

Quand je vais courir lipo -info sur le cadre, il a: armv7s armv7 i386 x86_64 arm64.

Auparavant, le projet avait des architectures valides à: ARMV7, AMVV7 et Arm64.

Dans Xcode 12, ce réglage s'en va, selon la documentation d'Apple. Les architectures sont définies sur $ (Archs_Standard). Je n'ai rien installé dans des architectures exclues.

Quelqu'un a-t-il une idée de ce qui peut se passer ici? Je n'ai pas encore pu reproduire cela avec un projet plus simple encore.

317
btxios

Après avoir essayé beaucoup de réponses inutiles en ligne. Cela fonctionne pour moi.

Tout d'abord, génère X86_64 pour les projets de pod !!!!

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ARCHS'] = "arm64 x86_64"
        end
    end
end

Deuxièmement, ajoutez "x86_64" pour valide_archs

enter image description here

0
YanXing Ou

Partager la solution qui a fonctionné pour moi, ce qui peut aider quelqu'un

Problème lors de la compilation du simulateur:

bâtiment pour iOS Simulator, mais reliant le fichier d'objet construit pour iOS, pour architecture arm64

XCODE 12.1, POD 1.9.1

Ma structure de projet

  • Cible principale
  • Partage d'extension
  • Extension de service notification
  • Suboudure, cadre personnalisé
  • Podfile
  1. Ajouter arm64 Pour construire des paramètres -> Exclude Architecture Dans toutes les cibles.

enter image description here

  1. Supprimé arm64 de VALID_ARCHS et ajouté x86_64 Dans toutes les cibles.

enter image description here

  1. Ajouter le code suivant en podfile

    post_install do |installer|
        installer.pods_project.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
     end
    end
    
  2. Fait pod update, supprimé podfile.lock, et a fait pod install

  3. Faire de la construction propre.

0
Gokul G

Après avoir exclu Arm64, j'ai toujours eu des arches [@]: variable non liée. Pour moi, la seule solution consistait à ajouter x86_64 au paramètre de construction cible, comme indiqué ici Problèmes après la mise à niveau vers Xcode 12: LD: Bâtiment pour iOS Simulator, mais reliant en dylib construit pour iOS, architecture arm64 Vous pourrait retirer l'exclusion ARM64 que vous avez ajouté auparavant.

0
Harry