web-dev-qa-db-fra.com

Vélo à l'intérieur; La construction peut produire des résultats peu fiables: Erreur Xcode 10

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é?

52
Sahil Kapoor

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.

10
Sahil Kapoor

Si vous rencontrez un problème avec le système de compilation Xcode 10, procédez comme suit pour le résoudre:

  1. Dans Xcode, sélectionnez Fichier-> Paramètres du projet/espace de travail.
  2. 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 .

45
Akshay Sunderwani

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.

30
JAL

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".

18
gypsyDev

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.

16
Rick Ballard

J'avais ce problème avec Cocoapods et j'ai trouvé une solution temporaire:

  1. Installez la dernière version de cocoapods (1.5.3): Sudo gem update cocoapods
  2. Supprimez vos données dérivées: rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

Source ici et je suis sur Xcode 10 beta 4.

EDIT: maintenant sur Xcode 10.0 et toujours pertinent.

14
gabuchan

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.

5
Nh Xu

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é.

5
Lookaji

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!

5
NoProb

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.

1
Jimmy

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.

1
vauxhall

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

Comment empêcher une référence circulaire lorsque Swift l'en-tête de pontage importe un fichier qui importe Hopscotch-Swift.h lui-même

EDIT:

J'ai fini par convertir les fichiers ci-dessus en Swift et cela a résolu mon problème.

1
Constantine

Données de base

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:

  • cliquez sur votre entité dans votre fichier "xcdatamodel"
  • allez à votre barre de droite cliquez sur Inspecteur de modèle de données
  • remplacer "Module" par "Module de produit actuel"
  • et finalement, remplacez "Codegen" par "Manuel/Aucun"
  • nettoyer et construire

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.

1
Alireza aj

Ma solution consistait simplement à nettoyer le dossier de construction, puis à le reconstruire.

1
onemoreanimal

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

1
likecatfood

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
1
bcherry

Vous pourrez peut-être résoudre ce problème ici:

Fichier -> Paramètres de l'espace de travail -> Système de génération: Nouveau système de génération

Workspace Settings

0
SepCode

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.

image 1

Xcode 10.2 & Swift 5

0
ShevaKuilin

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.

0
Vladimír Slavík