J'essaie de passer au nouveau système de compilation lors de la compilation avec Xcode 10. Cependant, l'erreur suivante apparaît:
Cycle details:
→ Target 'project' : LinkStoryboards
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex
Target 'project' has process command with input '/Users/project/Resources/Info.plist'
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Même après avoir supprimé le fichier de problème, je reçois le même pour un autre xib/storyboard. Comment puis-je résoudre cette erreur sans revenir au système de génération hérité?
J'ai finalement pu résoudre ce problème en déplaçant le script Embed App Extensions
dans Build Phases
de la cible principale vers la dernière position.
Si vous rencontrez un problème avec le système de compilation Xcode 10, procédez comme suit pour le résoudre:
- Dans Xcode, sélectionnez Fichier-> Paramètres du projet/espace de travail.
- Changez le système de compilation en Legacy Build System.
Cela résoudra le problème de construction avec le nouveau Xcode.
Si vous souhaitez utiliser le nouveau système de construction, vous pouvez trouver l'aide au dépannage: à partir de cette page d'aide Apple Xcode .
J'avais ce problème avec Cocoapods. La solution consistait à nettoyer le dossier de construction, à réinstaller tous les pods, puis à reconstruire l'application. Le problème s'est résolu de cette façon.
J'ai résolu mon problème en déplaçant la phase de construction "Copier les ressources du paquet" avant toutes mes phases de copie "Copier les fichiers" et "Lien binaire avec les bibliothèques".
Le nouveau système de construction de Xcode 10 détecte les cycles de dépendance dans votre construction et fournit des diagnostics pour vous aider à les résoudre. La correction de ces cycles de dépendance améliore la fiabilité de votre construction, de sorte que les produits corrects sont produits de manière cohérente (les cycles sont une cause possible de la nécessité de supprimer vos données dérivées). Cela améliore également vos temps de génération incrémentiels, car les cycles dans la génération ont pour effet que quelque chose dans votre graphique de construction est toujours obsolète pour chaque génération, ce qui fait que la nouvelle compilation fonctionne inutilement à chaque fois que vous générez.
Il existe une documentation sur la résolution de certains types courants de cycles de dépendance dans Xcode Help: https://help.Apple.com/xcode/mac/current/#/dev621201fb
Cela dit, ce cycle de diagnostic semble un peu étrange. Il semble que vous ayez pu le résoudre en réorganisant vos phases de construction, mais je ne pense pas que le diagnostic explique vraiment le problème. Si cela ne vous dérange pas, un rapport de bogue sur l'amélioration de ce diagnostic pour ce cas particulier serait très apprécié. Vous pouvez en déposer un à l’adresse https://bugreport.Apple.com . Veuillez inclure tous les détails de votre projet que vous jugez pertinents. Un exemple de projet qui reproduit le problème est idéal, mais si vous ne pouvez pas le joindre, le diagnostic et une idée de la structure du projet sont toujours utiles.
J'avais ce problème avec Cocoapods et j'ai trouvé une solution temporaire:
Sudo gem update cocoapods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
Source ici et je suis sur Xcode 10 beta 4.
EDIT: maintenant sur Xcode 10.0 et toujours pertinent.
Dans la variable Scheme
de la cible, recherchez l'étiquette Build
et assurez-vous que Find Implicit Dependencies
n'est pas coché. Ces étapes peuvent fonctionner.
J'ai eu un problème similaire avec une interaction mixte entre Swift, Objective-C et CoreData: dans mon projet (écrit en Swift), j'ai également utilisé les classes auto-générées Swift de Core Data. .
Mais à un moment donné, j’avais besoin d’une classe Objective C avec des propriétés publiques (définies dans son homologue d’en-tête) faisant référence aux entités de données centrales.
#import "ProjectName-Swift.h" // this is to import the Swift entities into ObjC
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
Dès que j'ai changé le modèle CoreData, XCode a essayé de reconstruire les classes et je me suis retrouvé bloqué avec l'erreur de génération de cycle indiquée.
Après un premier moment de désespoir, comme je n'avais aucune phase d'en-tête de compilation dans mon projet pour changer l'ordre, j'ai découvert que la solution était assez simple:
Dans le myObjCClass.h
, j'ai supprimé l'instruction d'importation d'en-tête Swift partagée et l'ai modifiée avec une directive @class
:
@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else
// the rest stays the same
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
et j'ai déplacé l'instruction #import "ProjectName-Swift.h"
dans le fichier de définition de classe myObjCClass.m
.
#import "myObjCClass.h"
#import "ProjectName-Swift.h"
@implementation myObjCClass
@end
Et cela ne s'est pas inquiété.
Je faisais face au même problème: l'erreur ci-dessous était
Faire défiler les dépendances entre les cibles 'Pods-MyAppName' et 'RxCocoa'; la construction pourrait produire des résultats peu fiables. Cela peut généralement être résolu en déplaçant la phase de construction des en-têtes de la cible avant de compiler les sources. Chemin de cycle: Pods-MyAppName → RxCocoa → Pods-MyAppName
Je l'ai résolu en utilisant les étapes ci-dessous:
1). Aller à la cible RxCocoa dans le projet Pods-MyAppName
2) Aller aux phases de construction
3) Faites glisser la phase des en-têtes et déplacez-la au-dessus de la phase de construction de sources compliquées.
Cela a résolu mon problème. J'espère que ça aide!
Xcode 10.2.1/Cible de test unitaire. Ma cible de test d'unité est indépendante de la cible de l'hôte pour améliorer le temps de construction. Résolvez-le en décochant Find Implicit Dependencies
dans Scheme
- Build
options, car je spécifie toutes les dépendances dans Build Settings
- Compile Sources
.
Même problème sur Version 10.0 beta 3 (10L201y)
et je voulais avoir le New Build System.
Le problème est désactivé Enable Modules (C and Objective-C)
dans Build Settings -> Apple Clang - Language - Modules
Après l’avoir activé (réglé sur OUI), l’erreur a été supprimée.
Mon problème concernait une dépendance cyclique entre mon en-tête de pontage Swift et mes fichiers Objective C.
Dans mes fichiers d'en-tête Objective C, j'avais un fichier #import "...-Swift.h"
, puis dans quelques-uns de mes fichiers Swift, je les incluais avec cette importation, provoquant ainsi une dépendance cyclique.
C'est le StackOverflow qui m'a amené à trouver la solution:
Objectif C, Swift Problème d'interopérabilité en raison d'une dépendance circulaire
EDIT:
J'ai fini par convertir les fichiers ci-dessus en Swift et cela a résolu mon problème.
J'avais le même problème et la même erreur, mais la mienne s'est produite lorsque j'ai "Créé la sous-classe NSManagedObject" pour mon entité et que j'ai rencontré cette erreur. Donc, si vous pensez que votre erreur est la même que la mienne à propos de Core Data, ce qui peut probablement vous aider (et m'a aidé) est la suivante:
Je pense que dans d’autres scénarios, Xcode crée automatiquement un fichier et que nous en créons un autre, un conflit se produit.
Ma solution consistait simplement à nettoyer le dossier de construction, puis à le reconstruire.
J'ai rencontré un problème similaire lorsque j'ai essayé d'archiver mon projet sur Xcode 10. Voici le texte détaillé:
→ Target 'mytarget': CodeSign /path/to/mytarget.app
○ Target 'mytarget': SetGroup staff /path/to/mytarget.app
○ Target 'mytarget': SetMode u+w,go-w,a+rX /path/to/mytarget.app
○ Target 'mytarget': SetGroup staff /path/to/mytarget.app
Corrigé en mettant $(USER)
dans mytarget -> Build Settings -> Deployment -> Install Owner
Il semble que vous ayez besoin de changer l'ordre des phases de construction dans vos cibles Pods. Pour moi, déplacer des en-têtes au-dessus des autres fonctionnait. Vous pouvez automatiser cela dans votre Podfile:
require 'xcodeproj'
post_install do |installer|
installer.pods_project.targets.each do |target|
headers_phase = target.build_phases.find { |p| p.kind_of?(Xcodeproj::Project::Object::PBXHeadersBuildPhase) }
if headers_phase
puts "#{target.name}: Moving Headers build phase to top"
target.build_phases.insert(0, target.build_phases.delete_at(target.build_phases.index(headers_phase)))
end
end
end
En fait, il vous suffit de faire attention à l'invite de Xcode This usually can be resolved by moving the target's Headers build phase before Compile Sources
et vous pourrez alors le faire.
Quand j'ai rencontré ce problème, Xcode m'invite:
:-1: Cycle inside XXXX; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources.
Cycle details:
→ Target 'XXXX': LinkStoryboards
○ Target 'XXXX: Ditto Path/XXXX-Swift.h /Path/XXXX-Swift.h
○ Target 'XXXX has compile command for Swift source files
○ That command depends on command in Target 'XXXX: script phase “Run Script”
Je n'ai fait qu'une chose et résolu parfaitement le problème:
Sélectionnez Target
puis sélectionnez Build Phase
pour déplacer le Run Script
au début de Compile Sources
.
Exécuter, compilé avec succès.
Le principe est simple, il suffit de changer l'ordre de compilation.
Xcode 10.2 & Swift 5
J'ai essayé des choses de cette page mais la seule chose qui m'a aidé était de faire une copie de la cible, de mettre à jour le nom de la copie (en supprimant le suffixe de copie), de supprimer l'ancien et de faire l'installation du pod par la suite.