web-dev-qa-db-fra.com

La commande CompileSwift a échoué avec un code de sortie différent de zéro dans Xcode 10

Bonne après-midi,

Après la mise à jour vers la dernière version de Xcode pour le moment (version 10.0), le projet ne peut pas être généré car il a détecté des erreurs concernant l'erreur "Commande CompileSwift a échoué.

Comment résoudre ces erreurs? Ils apparaissent dans la plupart des pods (j'utilise CocoaPods) que j'utilise dans mon projet.

J'ai essayé de mettre à jour la version du pod et les pods avec la dernière version disponible, mais le problème persiste.

J'ai beaucoup cherché sur le Web et il y a très peu d'informations concernant ce problème.

Cordialement.

52
Jordi Gámez

Actuellement, ma construction fonctionne . Voici les étapes que j'ai essayées jusqu'à ce que tout fonctionne enfin:

  1. Recherchez dans le projet entier le Word CommonCrypto.
  2. Si vous avez un pod contenant cette importation d'en-tête, supprimez-le du podfile et effectuez son installation.
  3. Nettoyer et construire le projet.
  4. Ajoutez à nouveau le pod au podfile et effectuez une installation du pod.
  5. Nettoyez et générez à nouveau le projet en utilisant si possible un périphérique réel.

Et si vous ne possédez pas ce Pod, vous pouvez peut-être essayer de suivre les mêmes étapes que certains anciens Pod que vous pourriez rencontrer dans votre projet.

Information ajoutée: aussi Si vous avez une erreur de code dans un pod, vous devez d’abord résoudre ce problème de code, puis essayer de recompiler le projet.

Je vais copier les modifications apportées à mon projet.pbxproj. Je sais que ce n'est pas très utile mais c'est la seule chose qui a changé dans la différence de git commit:

Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added:   BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };

J'espère que cela peut aider,

Cordialement.

24
Jordi Gámez

Pour moi, tout projet de nettoyage fonctionne en utilisant ShiftCommandK Et OptionShiftCommandK.

23
Mahgol Fa

J'ai eu ce problème et la modification du paramètre Mode de compilation pour le projet de Incremental à Whole Module l'a résolu pour moi.

 enter image description here

11
Werner Altewischer

Nettoyez l’application et essayez de la reconstruire en utilisant ShiftOptionCommandK puis CommandB.

10
Mohamad

Mon problème était dû à la non-existence d'un Switf CommonCrypto natif, à l'utilisation d'un en-tête de pontage et d'une cible qui, avec un peu de magie, l'incluait dans la construction. Comme CommonCrypto est maintenant natif, j'ai résolu le problème en supprimant la cible et le # import. Au lieu de cela, j'ai ajouté une importation CommonCrypto à l'endroit où je l'ai utilisé. 

7
Omid Ariyan

C'est un problème connu avec Swift 4.2 et Xcode 10. J'ai trouvé un article ici qui le corrige pour moi: https://github.com/Yummypets/YPImagePicker/issues/236

En bref, accédez aux paramètres de construction de vos projets et ajoutez un paramètre défini par l'utilisateur nommé Swift_ENABLE_BATCH_MODE et définissez sa valeur sur NO.

Auparavant, j'avais essayé chacune des méthodes suivantes suggérées ailleurs (reconstruction, sortie de Xcode, nettoyage et reconstruction, nettoyage des fichiers de données dérivées). Aucun d'entre eux a travaillé.

Une fois que j'ai ajouté le paramètre de définition de l'utilisateur défini dans l'article, Swift m'a alors dit la vraie erreur. Dans mon cas, c’était un manquant}, mais il pourrait y avoir un certain nombre de problèmes.

6
cdeerinck

Il est fort probable que vous ne lisiez pas tout le message d'erreur. Si vous regardez ci-dessus le message "La commande CompileSwift a échoué avec un code de sortie différent de zéro", vous devriez trouver une spécification comme celle-ci:

 enter image description here

Dans cet exemple, j'avais deux fichiers avec le même nom. Une fois que j'ai résolu le problème, tout a fonctionné comme il se doit.

5
Samy

J'ai fait ce qui suit et ça marche à merveille:

  • Ouvrir les préférences Xcode (Command,)
  • Accédez à l'onglet Locationsname__
  • Cliquez sur la petite flèche grise indiquant le chemin de l'URL pour Derived Data
  • La fenêtre du Finder s'ouvrira et affichera les dossiers suivants:

    • DerivedDataname__
    • Archivesname__
    • iOS DeviceSupport
    • UserDataname__
    • DocumentationCachename__
    • iOS Device Logs
  • Quitter Xcode

  • Supprimez le dossier DerivedData(il ne contient qu'un cache de versions précédentes)
  • Redémarrer Xcode
3
Mile Dev

Laissez-moi partager mon expérience pour résoudre ce problème.

Cible ouverte -> phases de construction -> copier les ressources du bundle et supprimer info.plist.

Remarque: Si vous utilisez des extensions, supprimez le fichier info.plist de cette extension des cibles.

J'espère que ça aide.

2
Gurunathan

dans mon cas, le problème était dû au fait que l'extension du kit de surveillance avait été définie sur Swift 3, tandis que l'objectif du projet principal était défini sur Swift 4.2.

2
Itay Bianco

J'ai tenté

  • Fermeture et réouverture de Xcode
  • Nettoyage du dossier de construction
  • En cours pod install --repo-update

et tout cela n'a toujours pas résolu le problème. Redémarrer le Mac a fait le tour

2
codeherk

ERROR = La commande CompileSwiftSources a échoué avec un code de sortie différent de zéro

Dans mon cas, quand j'ai trouvé cette erreur, je me suis retrouvé à l'étroit avec la compilation. Mais quand je vois des réponses à des problèmes liés. J'ai trouvé un fichier de duplication sur mon projet. Où le même viewController était là en tant que fichier de classe. Alors oui, quand je l'ai compris, j'ai changé le nom pour un nouveau. Et oui les choses ont changé !!! 

1
Harsh Vyas

La re-déclaration de classe sera le problème. vérifier la classe en double et construire.

1
Roshan lamichhane

J'ai cherché sur tout le Web mais je n'ai trouvé aucune solution à ce problème. J'ai réussi à supprimer le chemin "Common Crypto" dans la section: IMPORT Paths dans les paramètres de construction. Le problème semble être que la "crypto commune" existe maintenant dans la base du sdk ios 12.

Alors":

Supprimez simplement le chemin du fichier "crypto commun" dans les paramètres de construction et le projet se construira comme un charme! :)

1
sajede Nouri

Dans mon cas, il y avait une entrée en double pour un cadre dans Fichiers d'entrée de Cadre de Carthage section dans Build Phases

1
niks

L'exécution de pod install --repo-update ainsi que la fermeture et la réouverture de x-code ont résolu ce problème sur tous mes pods portant cette erreur.

1
RickS

Voici la solution: - Allez dans les paramètres de construction - Recherchez Swift_COMPILATION_MODE - S'il s'agit de "Whole Module" pour la configuration Release, remplacez-le par "Incremental" . - Archiver maintenant.

Lorsque vous définissez le paramètre sur "Incrémental", le processus aboutit.

1
Ankit Saini

Le mien était un problème d'espacement des noms. J'ai eu deux fichiers avec le même nom. Il suffit de les renommer et le problème a été résolu. 

Avant de regarder ailleurs, il faut toujours cocher la case "moi stupide" :)

1
PruitIgoe

Pour moi, le message d'erreur disait que j'avais trop de fichiers de simulateur ouverts pour construire Swift. Quand j'ai quitté le simulateur et construit à nouveau, tout a fonctionné.

1
mef27

Je viens d'ajouter à cette question. Mon problème n'avait rien à voir avec CommonCrypto. Il a créé une nouvelle application Single App et a été testé. Le compilateur se plaignait d'utiliser Swift 4.2

Le passage de la langue Swift à la version 4.0 dans les paramètres de construction a résolu le problème. Pas sûr que ce soit un bug.

1
Alexander

J'ai également rencontré le même problème et j'ai fait ce que @cdeerinck avait suggéré et obtenu le suivant link qui suggérait d'ajouter une variable définie par l'utilisateur au Build Settings pour désactiver le mode de traitement par lots, c'est-à-dire ajouter une nouvelle variable définie par l'utilisateur. nommé Swift_ENABLE_BATCH_MODE et mis à NO, j'ai pu mieux comprendre le problème et j'ai appris que l'erreur était dans un cadre utilisant CommonCrypto qui a été ajouté à il (par moi) mais depuis Xcode 10, il est exposé de manière native dans le cadre de Swift (pour les plates-formes Apple uniquement), et son ajout (ou son existence par rapport à la version précédente) provoquait une collision de noms et par conséquent, il jetait l'erreur. Pour en savoir plus, reportez-vous au ce lien qui explique le problème plus en détail.

1
Sudhanshu Vohra

J'ai le même problème et ma solution est de changer une petite chose dans les paramètres de construction

Swift_COMPILATION_MODE = singlefile;
Swift_OPTIMIZATION_LEVEL = "-O";
1
Daniel Le

Je l'ai eu au hasard depuis Xcode 10 . Je pense que cela se produit lorsque je modifie quelque chose dans le code alors que la construction commence . La prochaine construction fonctionne à chaque fois.

1
fl034

Il semble que ce soit une erreur assez vague, donc je vais partager ce que j'ai fait pour résoudre le problème quand je suis tombé sur ceci: 

À l’aide de Xcode 10.1 et de Swift 4.2, j’ai essayé à peu près toutes les suggestions présentées ici, mais aucune d’entre elles n’a fonctionné pour moi, puis j’ai réalisé que la dépendance que j’utilisais n’était pas compatible avec Swift 4.2 et que c’était à cause de cette erreur que je rencontrais. Donc, pour résoudre ce problème, je devais simplement forcer ce module à utiliser Swift 4.0 en mettant ceci à la fin de ma Podfile

post_install do |installer|
installer.pods_project.targets.each do |target|
    if ['TKRadarChart'].include? target.name
        target.build_configurations.each do |config|
            config.build_settings['Swift_VERSION'] = '4.0'
        end
    end
end

fin

0
Tyler Kuntz