web-dev-qa-db-fra.com

Xcode 8 beta 4: the construction échoue avec l'erreur

Avec le nouveau Xcode 8 beta 4, nous avons commencé à rencontrer l’erreur suivante au cours de la phase de construction CopySwiftLibs:

Effective srcDirs: {(

    <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphonesimulator'>,

    <DVTFilePath:0x7f8657d02b20:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/Swift/iphonesimulator'>

)}

erreur: les fichiers binaires suivants utilisent des versions incompatibles de Swift:

/Users/user/Projects/git/iphone-Swift-1/DerivedData/myApp/Build/Products/Debug-iphonesimulator/myApp.app/myApp

/Users/user/Projects/git/iphone-Swift-1/myApp/myAppApi.framework/myAppApi

myAppApi est un sous-projet de l'espace de travail contenant du code partagé (il utilise Alamofire).

Une chose à noter: à l'origine, nous avions converti le projet de Swift 2.2 en Swift 2.3, puis mis à niveau manuellement vers la version 3.0.

Est-ce que quelqu'un a une idée de ce qui pourrait causer cette erreur?

Merci!

27
iGA

J'ai eu le même problème, mais j'ai réussi à résoudre par

  1. Nettoyez le projet.
  2. Fermez le projet et quittez Xcode.
  3. Nettoyer les données dérivées.
  4. Ouvrez le projet à nouveau et il est là, tout Nice et fonctionne.

Je l'ai fait sur Xcode 8 en utilisant Swift 3. 

63
ossmalpha

Vous pouvez également rencontrer ce problème si le scénario du code de votre application conteneur est Swift 2.3 et que vous créez une nouvelle extension dans Xcode 8.

Pour résoudre le scénario ci-dessus ... 

Remarque: Tout le code doit être dans la même version de Swift (compatible) pour pouvoir être compilé sans échec. 

Cela dit, vous pouvez résoudre ce problème en collant à Swift 2.3, puis en paramétrant votre Utilisez la version antérieure du langage Swift sur "Oui".

Vous pouvez trouver cette option lorsque Xcode 8 est ouvert comme suit:

  1. Sélectionnez la racine de votre projet d'application dans le navigateur de projet (à gauche).
  2. Sur le côté droit, sélectionnez votre extension dans la section CIBLES
  3. Une fois l'extension sélectionnée, cliquez sur Build Settings tab
  4. Faites défiler l'écran vers le bas et recherchez Utilisez Legacy Swift Language Version et définissez-lato Oui dans son menu déroulant.
  5. Vous pouvez maintenant construire le projet

Remarque: Il se peut que vous deviez corriger le code remplacé dans les modèles d’extension, car ils étaient à l’origine dans Swift 3.

15
iAmcR

Avant de faire quoi que ce soit ...

(Si vous pouvez utiliser Xcode 8.0-compatible avec votre projet)

Par défaut, votre projet est défini sur Xcode 3.2-compatible.

  • Sélectionnez votre projet d'application dans le Navigator (à gauche).
  • Sélectionnez Document du projet dans le panneau Utilitaires (sur le côté droit.).
  • Remplacez Format du projet par compatible avec Xcode 8.0

Essayez de construire votre projet.

Si cela ne fonctionne pas, essayez les autres solutions proposées.

Remarque: Vous pouvez même revenir à la compatibilité Xcode 3.2 après avoir corrigé l'erreur et cela devrait fonctionner, mais vous pourriez "avoir" d'autres problèmes de construction ultérieurement.

Recommandation: Avant de déboguer un projet existant. Fermez votre projet et compressez une copie de votre fichier de projet si vous n'avez pas créé de référentiel Git lors de la création de votre projet.

6
ShakeMan

J'ai résolu ce problème en supprimant les fichiers binaires incorporés dans le projet. Pour faire ça:

  1. Ouvrez votre espace de travail/projet dans Xcode.
  2. Accédez au fichier de projet réel (avec le ruban Général, Capacités, etc.).
  3. Allez dans Général> Binaires incorporés, supprimez-les en sélectionnant ceux que vous ne voulez pas, puis en cliquant sur le signe moins.

Remarque 1: Vous ne devriez pas avoir à les supprimer de la section "Structures et bibliothèques liées" (elles devraient être automatiquement supprimées lorsque vous les supprimez des "Fichiers binaires incorporés").

Note 2: J'ai beaucoup de dépendances et j'utilise CocoaPods. Je n'ai rien dans les "Fichiers binaires incorporés" et uniquement les "Pods_ [YourApplicationName] .framework" dans la section "Frameworks and Libraries".

3
Clayton

Je viens d'avoir le même problème après la mise à jour de Xcode vers 9.3. J'ai résolu le problème simplement en nettoyant le dossier de construction. Vous pouvez le faire avec Commande-Option-Maj-K ou dans le menu d'options "Produit" -> "Nettoyer" (voir capture d'écran).

 You can clean the build folder with Command-Option-Shift-K or in the option menu "Product" -> "Clean"

2
Samir

J'ai eu diverses bibliothèques intégrées via carthage. Cependant, au cours du processus, j'ai remplacé certains d'entre eux par des cocoapodes et oublié de supprimer l'ancien fichier .frameworks de la cible du projet.

En les supprimant a résolu l'erreur de construction.

2
ph1lb4

J'ai eu le même problème… .. Ma solution a été de renommer le répertoire «myApp» en «myAppmyApp», puis j'ai à nouveau exécuté l'application. Un nouveau répertoire 'myApp' a été créé et l'application s'est à nouveau très bien déroulée sur mon iPhone.

Une différence par rapport à votre situation pourrait être la suivante: le nom de mon application, disons «myApp» dans le répertoire «DerivedData», correspondait à myApp:

Peut-être que cela vous aidera.

Sincères amitiés.

1
user6832423

J'ai eu le même message d'erreur après avoir ajouté une version Swift 3 d'un framework. 

Mon framework search path cible était toujours configuré pour rechercher à la fois les versions Swift 2 et Swift 3 du même framework. Mon projet est donc resté bloqué sur la version 2.3 de Swift. 

Pour moi, la solution a été de supprimer l'ancien framework de mon répertoire de projet et de supprimer sa référence de dossier du framework search path

0
vmeyer

Je viens donc de poster la solution que j'ai trouvée jusqu'à présent après une heure de débogage.

Depuis Xcode 9, ceci peut être suivi par le journal du compilateur.

Si vous faites défiler l'écran jusqu'en bas du journal du compilateur, vous constaterez que ce problème est dû à un crash de la vérification du type.

 enter image description here

0
Zigii Wong

Vous devez basculer toutes les dépendances sur Swift 3. Dans votre cas, Alamofire doit être basculé sur la branche Swift 3

0
Martin Romañuk