अंदर चक्र; भवन अविश्वसनीय परिणाम दे सकता है: Xcode 10 त्रुटि


80

मैं Xcode 10 के साथ संकलन करते समय नए बिल्ड सिस्टम में जाने की कोशिश कर रहा हूं। हालांकि, यह निम्नलिखित त्रुटि देता है:

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'

स्क्रीनशॉट जोड़ा गया

समस्या फ़ाइल को निकालने के बाद भी, मैं एक और xib / स्टोरीबोर्ड के लिए समान हूं। लीगेसी बिल्ड सिस्टम को वापस किए बिना मैं इस त्रुटि को कैसे हल कर सकता हूं?


मेरे पास समान त्रुटि थी और इसे 'व्युत्पन्न डेटा' और सफाई परियोजना को हटाकर ठीक किया गया। यह मेरे लिए एक आकर्षण की तरह काम करता है!
जयप्रकाश दुबे

जवाबों:


62

Xcode 10 बिल्ड सिस्टम के साथ किसी भी समस्या के लिए, इसे ठीक करने के लिए निम्नलिखित चरणों का पालन करें:

  1. Xcode में, फ़ाइल-> प्रोजेक्ट / कार्यक्षेत्र सेटिंग्स पर जाएं।
  2. बिल्ड सिस्टम को लिगेसी बिल्ड सिस्टम में बदलें।

यह नए Xcode के साथ बिल्ड समस्या को हल करेगा।

यदि आप नए बिल्ड सिस्टम के साथ काम करना चाहते हैं, तो आप इस ऐप्पल एक्सकोड हेल्प पेज से समस्या निवारण सहायता पा सकते हैं ।


50
प्रश्न का पूरा बिंदु नवीनतम निर्माण प्रणाली की ओर बढ़ना है।
साहिल कपूर

4
फिर आपको उस प्रश्न का उल्लेख करना चाहिए जिसमें आप बिल्ड सिस्टम को बदलने के साथ समाधान नहीं चाहते हैं। इसके अलावा, मैंने उल्लेख किया है कि यदि आप नए बिल्ड सिस्टम के साथ काम करना चाहते हैं तो आप Xcode सहायता केंद्र पर दिए गए चरणों का पालन कर सकते हैं। इसके अलावा, जब आप डाउनवोट करें तो एक वैध कारण प्रदान करें। धन्यवाद! @ साहिल कपूर
अक्षय सुंदरानी

1
धन्यवाद दयालु अजनबी। मेरी एकमात्र रुचि मेरे निर्माण को फिर से काम करने के लिए एक समय सीमा हिट करने के लिए हो रही है, इसलिए आपका उत्तर ठीक वही है जो मुझे चाहिए था।
डैन लोफनी

6
यह समस्या का उचित समाधान नहीं है। इस सरल कुछ के लिए निर्माण प्रणाली को लिगेसी में नहीं बदला जाना चाहिए।
वरुण गोयल

38

मैं कोकोपोड्स के साथ इस मुद्दे पर था। समाधान बिल्ड फ़ोल्डर को साफ करने के लिए सभी पॉड्स को फिर से स्थापित करना था, और फिर एप्लिकेशन को फिर से बनाना। मुद्दे ने खुद को इस तरह से हल किया।


2
यह मेरे लिए भी काम किया। मैंने एक साफ और एक पॉड इंस्टॉल किया।
Cloud9999Strife 12

मेरे मामले में, मैंने अभी एक पॉड स्थापित किया है ताकि केवल बिल्ड फ़ोल्डर को साफ करना पड़े। यह त्रुटि केवल तब आई जब मैंने Xcode को बिल्ड सेटिंग्स अपडेट करने की अनुमति दी।
स्टोनेटिप

आलमोफायर के साथ मुद्दा था। किसी भी कोको फली को फिर से स्थापित किए बिना 'क्लीन बिल्ड फोल्डर' किया और ठीक काम किया
kite_n_code

25

मैंने अपनी सभी 'कॉपी फाइल्स' और 'लिंक बाइनरी विद लाइब्रेरीज' के चरणों से पहले 'कॉपी बंडल रिसोर्स' बिल्ड फेज को आगे बढ़ाकर अपनी समस्या को ठीक किया।


+1 लेकिन मैंने थोड़ा बदलाव किया। मुझे "लिंक बाइनरी विद लाइब्रेरीज़" से आगे बढ़ने की ज़रूरत नहीं थी, जो मैं नहीं करूंगा क्योंकि Xcode में एक नया डिफ़ॉल्ट प्रोजेक्ट ऐसा नहीं है। मैं बस "कॉपी हेल्पर टूल्स" के आगे "कॉपी हेल्पर टूल्स" (जो कुछ कमांड-लाइन टूल्स और एक हेल्पर ऐप को कॉपी करता है, जिसमें MacOS ऐप उत्पाद के कंटेंट / हेल्पर्स को स्थानांतरित किया गया है)। लेकिन चूंकि इन दोनों के क्रम में कोई फर्क होना चाहिए - वे केवल फाइलों की नकल कर रहे हैं - इसका कोई मतलब नहीं है। इसलिए मैंने एक बग दर्ज किया: 42927301। मेरा संशोधित समाधान: विभिन्न कॉपी XXX बिल्ड चरणों के आसपास स्वैप करें जब तक कि यह काम न करे :(
जेरी क्रिनॉक

2
मेरे लिए भी, मैंने कॉपी फाइलों के चरण के ऊपर अपने कॉपी बंड संसाधनों को स्थानांतरित किया और अब यह काम करता है। मैं आपके बग @JerryKrinock
पीटर एन लुईस

मेरे लिए, समस्या एंबेड फ्रेमवर्क निर्भरता के साथ थी, इसलिए मैंने कॉपी बंडल संसाधनों के ऊपर एंबेड फ्रेमवर्क को स्थानांतरित किया, और इससे मदद मिली।
ऐलेना

19

Xcode 10 की नई बिल्ड प्रणाली आपके निर्माण में निर्भरता चक्र का पता लगाती है और आपको उन्हें हल करने में मदद करने के लिए निदान प्रदान करती है। इन निर्भरता चक्रों को ठीक करने से आपके निर्माण की विश्वसनीयता में सुधार होता है, जिससे कि सही उत्पाद लगातार उत्पादित होते हैं (चक्र आपके व्युत्पन्न डेटा को हटाने की आवश्यकता का एक संभावित कारण हैं)। यह आपके वृद्धिशील निर्माण के समय में भी सुधार करता है, क्योंकि निर्माण में चक्र आपके बिल्ड ग्राफ में कुछ कारण बनते हैं, प्रत्येक बिल्ड पर हमेशा आउट-ऑफ-डेट रहते हैं, जिससे बिल्ड आपके द्वारा निर्मित हर बार अनावश्यक रूप से काम करते हैं।

Xcode सहायता में कुछ सामान्य प्रकार की निर्भरता चक्रों को हल करने पर प्रलेखन है: https://help.apple.com/xcode/mac/current/#/dev621201fb0

उस ने कहा, यह चक्र निदान थोड़ा अजीब लगता है। ऐसा लगता है कि आप इसे अपने निर्माण चरणों को फिर से व्यवस्थित करके हल करने में सक्षम थे, लेकिन मुझे नहीं लगता कि निदान ने वास्तव में समस्या को समझाया। यदि आप बुरा नहीं मानते हैं, तो इस विशेष मामले के लिए इस निदान को बेहतर बनाने के बारे में एक बग रिपोर्ट की बहुत सराहना की जाएगी। आप https://bugreport.apple.com पर एक फ़ाइल कर सकते हैं । कृपया अपनी परियोजना के बारे में सभी विवरण शामिल करें जो आपको लगता है कि प्रासंगिक हो सकता है; नमूना प्रोजेक्ट जो समस्या को पुन: पेश करता है वह आदर्श है, लेकिन यदि आप इसे संलग्न नहीं कर सकते हैं, तो निदान और परियोजना संरचना का कुछ विचार अभी भी मददगार है।


18

मुझे कोकोपोड्स के साथ यह समस्या आ रही थी और एक अस्थायी वर्कअराउंड मिला:

  1. कोकोपोड्स का नवीनतम संस्करण स्थापित करें (1.5.3): sudo gem update cocoapods
  2. हटाए गए डेटा को हटाएं: rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

यहाँ स्रोत और मैं Xcode 10 बीटा 4 पर हूँ।

संपादित करें : अब Xcode 10.0 और अभी भी प्रासंगिक है।


यह पिछले हफ्ते फिर से Xcode 10.1 (10B61) पर मेरे साथ हुआ और अभी भी यह काम कर रहा है। Clean Build Folderचरणों को करने से पहले (और छोड़ने वाले Xcode भी मदद कर सकते हैं) प्रदर्शन करना सुनिश्चित करें 2.और 3.
गाबुचन

एक जादू की तरह काम किया!
ध्वजवाहक

15

मेरे पास स्विफ्ट, ऑब्जेक्टिव-सी और कोरडेटा के बीच एक मिश्रित बातचीत के साथ एक समान मुद्दा था : मेरी परियोजना में (स्विफ्ट में लिखा गया) मैंने कोर डेटा के ऑटोजेनरेटेड स्विफ्ट कक्षाओं के साथ ही उपयोग किया।

लेकिन एक बिंदु पर मुझे मुख्य डेटा संस्थाओं का संदर्भ देते हुए सार्वजनिक संपत्तियों (इसके हेडर समकक्ष में परिभाषित) के साथ एक उद्देश्य सी वर्ग की आवश्यकता थी।

#import "ProjectName-Swift.h" // this is to import the swift entities into ObjC

@interface myObjCClass : NSObject

@property (nonatomic) MyCoreDataClass*myEntity;

@end

जैसे ही मैंने CoreData मॉडल को बदला, XCode ने कक्षाओं को फिर से बनाने की कोशिश की और मैं संकेतित चक्र निर्माण त्रुटि के साथ लटका दिया गया।

निराशा के एक शुरुआती क्षण के बाद, जैसा कि मैंने अपनी परियोजना के क्रम को बदलने के लिए कोई संकलन शीर्ष लेख चरण नहीं बनाए, मुझे पता चला कि समाधान काफी सरल था:

में myObjCClass.hमैं साझा स्विफ्ट हैडर इंपोर्ट स्टेटमेंट निकाल दिया और एक साथ यह बदल @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

और मैंने #import "ProjectName-Swift.h"बयान को myObjCClass.mवर्ग परिभाषा फ़ाइल में स्थानांतरित कर दिया ।

#import "myObjCClass.h"
#import "ProjectName-Swift.h"

@implementation myObjCClass

@end

और इसने कोई चिंता नहीं की।


वाह, बहुत बहुत धन्यवाद। इसके साथ पूरी रात संघर्ष किया, लेकिन जब मैंने इस सुझाव को पूरी तरह से लागू किया, तो समस्या ठीक हो गई!
एरिक वैन डेर नीट सेप

14

मैं मुख्य लक्ष्य के लिए Embed App Extensionsस्क्रिप्ट Build Phasesको अंतिम स्थिति में ले जाकर इसे हल करने में सक्षम था ।


Xcode 10.0 बीटा 4 (10L213o) में यह त्रुटि मिली - इस समाधान ने इसे हल कर दिया :-)
StackUnderflow

11

वास्तव में, आपको केवल Xcode के संकेत पर ध्यान देने की आवश्यकता है This usually can be resolved by moving the target's Headers build phase before Compile Sources, और फिर आप इसे कर सकते हैं।

जब मैंने इस समस्या का सामना किया, तो Xcode मुझे संकेत देता है:

:-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”

मैंने केवल एक काम किया और समस्या को पूरी तरह हल किया:

सेलेक्ट करें Targetऔर फिर सामने की Build Phaseओर जाने के Run Scriptलिए चुनें Compile Sources

भागो, सफलतापूर्वक संकलित।

सिद्धांत सरल है, बस संकलन क्रम बदलें।

छवि 1

Xcode 10.2 और स्विफ्ट 5


2
यह काम करता है लेकिन केवल एक बार और फिर अगली बिल्ड कमांड में, यह मुद्दा वापस आता है।
स्वाति

6

मैं एक ही मुद्दे का सामना कर रहा था: नीचे त्रुटि थी

लक्ष्य 'पॉड्स-मायएपनाम' और 'आरएक्सकोचा' के बीच निर्भरता में चक्र; भवन अविश्वसनीय परिणाम दे सकता है। यह आमतौर पर कम्पाइल सोर्स से पहले टारगेट के हेडर्स बिल्ड चरण को स्थानांतरित करके हल किया जा सकता है। साइकिल पथ: पॉड्स- MyAppName → RxCocoa → पॉड्स-मायएपनेम

मैंने इसे नीचे दिए गए चरणों का उपयोग करके हल किया:

1)। पॉड्स- MyAppName प्रोजेक्ट में RxCocoa को लक्षित करें

2) चरणों का निर्माण करने के लिए जाओ

3) हेडर चरण को खींचें और इसे कंपाइल सोल्स बिल्ड चरण के ऊपर ले जाएं।

इससे मेरा मुद्दा ठीक हो गया। आशा है कि इससे सहायता मिलेगी!


6

लक्ष्य में Scheme, लेबल ढूंढें Build, और सुनिश्चित करें कि Find Implicit Dependenciesजाँच नहीं हुई है। ये कदम काम कर सकते हैं


जब आप "पास" कहते हैं, तो क्या आपका मतलब है कि इसका रंग और चेक मार्क होना चाहिए? या कि यह खाली होना चाहिए, बिना चेक मार्क के?
बेन लेगिएरो

1
हाय, @BenLeggiero। "बंद" का मतलब है कि यह खाली होना चाहिए, बिना चेक मार्क के।
Nh जू

3

मेरा समाधान केवल बिल्ड फोल्डर को फिर से साफ करने के लिए था।


कमाल है कि इस समाधान पर किसी ने कैसे रेट नहीं किया। सरल लेकिन यह पहली बात होगी कि हमें इस मुद्दे पर गहराई से जाने से पहले प्रयास करना चाहिए।
मैं हूं

3

मेरे मुद्दे को मेरे स्विफ्ट ब्रिजिंग हेडर और मेरे उद्देश्य सी फाइलों के बीच चक्रीय निर्भरता के साथ करना था।

अपने उद्देश्य सी हेडर फ़ाइलों में, मेरे पास एक #import "...-swift.h"फ़ाइल थी और फिर मेरी स्विफ्ट फ़ाइलों के एक जोड़े में मैं उन फाइलों को शामिल कर रहा था जिनके साथ आयात किया गया था और इस तरह एक चक्रीय निर्भरता पैदा हुई थी।

यह StackOverflow है जिसने मुझे समाधान खोजने के लिए प्रेरित किया:

उद्देश्य सी, परिपत्र निर्भरता के कारण स्विफ्ट इंटरऑपरेबिलिटी मुद्दा

परिपत्र संदर्भ को कैसे रोकें जब स्विफ्ट ब्रिजिंग हेडर एक फाइल आयात करता है जो Hopscotch-Swift.h को ही आयात करता है

संपादित करें:

मैं ऊपर की फ़ाइलों को तेजी से परिवर्तित करने के लिए घायल हो गया और इससे मेरी समस्या हल हो गई।


2

ऐसा लगता है कि आपको अपने पोड्स टारगेट के भीतर बिल्ड चरणों के क्रम को बदलने की आवश्यकता है। मेरे लिए, बाकी के ऊपर हेडिंग चलती थी। आप इसे अपने पोडफाइल में स्वचालित कर सकते हैं:

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

इसी मुद्दे पर Version 10.0 beta 3 (10L201y)और मैं न्यू बिल्ड सिस्टम रखना चाहता था ।

समस्या अक्षम हो गई थी Enable Modules (C and Objective-C)

में Build Settings -> Apple Clang - Language - Modules

इसे सक्षम करने के बाद (YES पर सेट) त्रुटि से छुटकारा मिल गया।


1

जब मैं Xcode 10 पर अपने प्रोजेक्ट को संग्रहीत करने की कोशिश कर रहा हूं तो मैं इसी तरह के मुद्दे से मिल चुका हूं। यहां विस्तार टेक्स्ट दिया गया है:

→ 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

$(USER)में स्थापित करके इसे ठीक कियाmytarget -> Build Settings -> Deployment -> Install Owner


1

Core_Data

मेरे पास एक ही समस्या और त्रुटि थी, लेकिन मेरा तब हुआ जब मैंने अपनी इकाई के लिए "NSManagedObject Subclass" बनाया और मुझे इस त्रुटि का सामना करना पड़ा। इसलिए यदि आपको लगता है कि आपकी त्रुटि कोर डेटा के बारे में मेरी ही है, तो इससे आपको क्या मदद मिल सकती है (और मेरी मदद की):

  • आपके "Xcdatamodel" फ़ाइल में अपने इकाई पर क्लिक करें
  • अपने सही बार पर जाएं डेटा मॉडल इंस्पेक्टर पर क्लिक करें
  • "मॉड्यूल" को "वर्तमान उत्पाद मॉड्यूल" में बदलें
  • और अंत में, "कोडेन" को "मैनुअल / कोई नहीं" में बदलें
  • साफ और निर्माण

मुझे लगता है क्योंकि अन्य परिदृश्यों में Xcode स्वचालित रूप से एक फ़ाइल बनाता है और जब हम एक और एक बनाते हैं तो यह एक संघर्ष का कारण बनता है।


1

Xcode 10.2.1 / यूनिट टेस्ट लक्ष्य। भवन समय में सुधार के लिए मेरा इकाई परीक्षण लक्ष्य मेजबान लक्ष्य से स्वतंत्र है। अचिह्नित द्वारा इसे हल Find Implicit Dependenciesमें Scheme- Buildके रूप में मैं सभी निर्भरता निर्दिष्ट करते हैं, विकल्प Build Settings- Compile Sources


0

आप इसे यहाँ ठीक करने में सक्षम हो सकते हैं:

फ़ाइल -> कार्यक्षेत्र सेटिंग्स -> बिल्ड सिस्टम: नई बिल्ड सिस्टम

कार्यक्षेत्र सेटिंग्स


0

मैंने इस पृष्ठ से चीजों की कोशिश की है, लेकिन केवल एक चीज जिसने मुझे मदद की है कि मैंने लक्ष्य की एक प्रतिलिपि बनाई और कॉपी का नाम अपडेट किया (कॉपी प्रत्यय हटा दिया), और पुराने को हटा दिया, और बाद में पॉड स्थापित किया।


0

मुझे Xcode को 11.4 संस्करण में अपडेट करने के बाद इस समस्या का सामना करना पड़ा। डाउनग्रेड करने के लिए 11.2.1 तय किया।


0

Xcode: 11.3.1 लक्ष्य: XCUITest लक्ष्य

  1. बिल्ड फ़ोल्डर को साफ़ करने के लिए कमांड चलाएँ: rm -rf ~ / Library / Developer / Xcode / DerivedData / *

  2. कार्यक्षेत्र सेटिंग्स बदलें: लिगेसी बिल्ड सिस्टम का चयन करें

यहाँ छवि विवरण दर्ज करें


-1

निम्नलिखित दो विकल्पों ने मेरे लिए काम किया: फ़ाइल-> प्रोजेक्ट / कार्यक्षेत्र सेटिंग्स।

1, फ़ाइल-> प्रोजेक्ट सेटिंग्स में बिल्ड सिस्टम को "लिगेसी बिल्ड सिस्टम" में बदलें

2, एडिट स्कीम और बिल्ड सेक्शन के तहत "पैरेलल बिल्ड बिल्ड" विकल्प चुनें।


वह संबंधित नहीं है। आधुनिक निर्माण प्रणाली इसका कारण नहीं बनेगी।
रैप्टर

-1

LHS पर प्रोजेक्ट फलक में, अपने बिल्ड उत्पादों के लिए, उन्हें RHS फलक में लक्ष्य सदस्यता के लिए सूची में न चुनें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.