web-dev-qa-db-fra.com

Xcode 10.2, Swift 5, la commande compileSwift a échoué lors de la génération du programme avec Release Scheme

J'utilise Xcode 10.2, Swift 5.

Avec le schéma de débogage, aucun problème ne se produit, mais avec le schéma de libération lorsque je crée ou archive, il montre que la commande compileSwift a échoué avec un code de sortie différent de zéro.

J'ai essayé de supprimer DerivedData/Clean/pod deintegrate & pod install & pod update. Aucune de ces œuvres.

enter image description hereenter image description here

18
Ran Bi

Pour mon projet, le problème était lié au pod Cache qui donne une erreur lorsque Optimization Level pour Release est défini sur Optimize for Speed [-O]. J'ai mis Compilation Mode à Whole Module à nouveau et définissez le niveau d'optimisation pour le pod dans le fichier pod:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    # Cache pod does not accept optimization level '-O', causing Bus 10 error. Use '-Osize' or '-Onone'
    if target.name == 'Cache'
      target.build_configurations.each do |config|
        level = '-Osize'
        config.build_settings['Swift_OPTIMIZATION_LEVEL'] = level
        puts "Set #{target.name} #{config.name} to Optimization Level #{level}"
      end
    end
  end
end

Réfrence: https://github.com/hyperoslo/Cache/issues/233#issuecomment-47774956

7
Olcay Ertaş

J'ai résolu ce problème en allant Projet Pods puis aux paramètres du bâtiment et en définissant Mode de compilation à Incrémental pour Release. Ensuite, nettoyez et archivez, devrait alors compiler correctement.

6
Neil Faulkner

J'ai donc eu le même problème lors de la mise à jour de mon projet vers Swift 5. Pour une raison quelconque, Cocoapods (dernière version, 1.6.1) a défini la Swift_VERSION de certains pods sur Swift 5 même s'ils sont publiés en tant que Swift 4, 4.1, 4.2 pods. J'ai donc dû ajouter un script de post-installation qui définissait la version de correction de Swift comme ceci

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'CryptoSwift' || target.name == 'SwiftyBeaver'
      target.build_configurations.each do |config|
        config.build_settings['Swift_VERSION'] = '4.2'
      end
    end
  end
end
1
Dimillian

J'ai dû définir "Optimization Level" dans "Swift Compiler - Code Generation" sur "Release" - "No Optimization [-Onone]" de "Optimize for speed" pour que Cache passe Archive.

Même chose avec SwiftyBeaver

Cela semble être un problème lié à Xcode 10.2. De plus, d'autres projets de pod semblent bien avec l'optimisation, comme Toucan ou XCGLogger.

1
An Chin

J'ai eu le même problème après la mise à niveau vers Xcode 10.2. Après avoir suivi les étapes ci-dessous, cela a fonctionné pour moi:

  1. Mettre à jour les pods
  2. Nettoyer le dossier du projet
  3. Changer le projet Pods Swift Language Version to nspecified and (as suggestion by @Neil Faulkner) Compilation Mode to Incremental
1
cgontijo

vous pouvez suivre ces étapes ...

  1. Assurez-vous de changer la version Swift vers votre version actuelle.
  2. Mettez à jour tous vos pods.
  3. Nettoyez toutes les données dérivées de Xcode.
  4. Redémarrez maintenant votre Mac.

Vous obtenez toutes ces erreurs uniquement à cause des pods ... alors vous devez également mettre à jour chaque pod que vous utilisez.

0
Ashish