2016-10-05 19 views
9

समस्या यह है कि जब XCode 8 में एक स्विफ्ट एप्लिकेशन बनाने, स्रोत फ़ाइलें जल्दी से संकलित किए जाते हैं है, लेकिन प्रतिलिपि बनाई जा रही स्विफ्ट मानक पुस्तकालयों केक लेता है - चरण कई मिनट के लिए चला सकते हैं (आमतौर पर पूरा निर्माण लगभग 4-5 मिनट होता है, सबसे खराब मामले 10 मिनट से अधिक उदारता से होते हैं - एक मिनट से कम होने के लिए उपयोग किया जाता है)।XCode 8.0 एप्लिकेशन इमारत ultraslow

इसके अतिरिक्त, हस्ताक्षर संग्रह के निर्यात का चरण दर्दनाक रूप से धीमा है, कभी-कभी आधे घंटे के करीब ले जाता है (फिर से, काफी तेज़ होता था)।

मैंने वेब के लिए जवाबों के लिए वेब को खराब कर दिया है, एक्सकोड अनगिनत बार पुनर्स्थापित किया है, नए स्विफ्ट टूलचेन्स को आजमाया है, सिएरा के आईक्लाउड ड्राइव को चालू/बंद करने के साथ प्रयोग किया गया है (व्युत्पन्न फ़ोल्डर को अभी भी इसे छिपाने की जरूरत है), हर निर्माण की कोशिश की यह निर्धारित करना कि किसी ने भी, और उनकी मां ने सिफारिश की है, कई नई खाली परियोजनाएं बनाई हैं, और सभी उम्मीदों को खो दिया है ...

तो मेरा सवाल यह है कि, मैं इसे सामान्य कैसे बना सकता हूं?

संपादित करें: मैं अपने मैक के कीचेन में एप्पल आईडी कुंजी (के पब-एस एक ही राशि और priv-s, और साथ प्रमाण पत्र) है - इस बात की संभावना इस मुद्दे से संबंधित है इसके लिए? उनके माध्यम से जाने के लिए एक टन लेता है और सही हस्ताक्षर करने के लिए सही लगता है?

+0

मुझे नहीं पता कि यह आपके लिए लागू होता है, लेकिन धीमी संकलन के समय से बचने के लिए यह अच्छी सलाह है: अपने कोडबेस में, "जटिल" अभिव्यक्तियों (जैसे बालों वाले एक-लाइनर) की तलाश करें और उन्हें कई अभिव्यक्तियों में विभाजित करें अस्थायी चर का उपयोग कर।और यदि आपके पास शब्दकोष शब्द हैं, तो स्वयं को टाइप करके कंपाइलर की सहायता करें (आमतौर पर टाइप अनुमान का उपयोग करना बेहतर होता है लेकिन इस मामले में स्पष्ट रूप से प्रकार देना बेहतर होता है) यह कंपाइलर के कार्य को कम करेगा। – Moritz

+0

एरिक सुझावों के लिए धन्यवाद, वे हमेशा उपयोगी होते हैं। मैं अपने कोड को दोबारा जांचने के लिए [BuildTimeAnalyzer] (https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode) का उपयोग कर रहा हूं, ताकि कोई लंबा संकलन स्रोत-सामान न हो (सबसे लंबा 61.8ms है, और कुल ~ 20 कार्य हैं जो 10ms से अधिक संकलित करते हैं)। –

+0

यह एक्सकोड 8.3 स्विफ्ट 3.1 पर काम करता है - http://stackoverflow.com/a/40497873/1890317 –

उत्तर

11

तो ... मैं अंत में बोले और नष्ट कर दिया मेरे सभी एप्पल आईडी कुंजी शीर्षक है (सिवाय 1 कुंजी युग्म) मेरे सेचेन (चीजों को तोड़ने के बारे में डर था) से। अब सब कुछ जल्दी/सामान्य रूप से बनाता है और मैं अंत में फिर से खुश हो सकते हैं ...

बस को दोहराना - सुनिश्चित करें कि आप कीचेन में डुप्लिकेट चाबी नहीं है बनाते हैं।

+1

में 700+ डुप्लिकेट कुंजी थी - उन्हें सब हटा दिया गया और सब कुछ ठीक से काम करना शुरू कर दिया (और तेज़)। एक्सकोड हटाए जाने के बाद स्वचालित कुंजी आवश्यक कुंजी को प्रावधान करता है। बहुत निराश है कि एक्सकोड उस अजीब परिस्थिति में आया और मेरा इतना समय बर्बाद कर दिया (और मैं कई अन्य डेवलपर्स मानता हूं) – aporat

+0

@ मिक रत्सप क्या मतलब है कि आपने 1 कुंजी भुगतान को छोड़कर सभी ऐप्पल आईडी कुंजी हटा दी हैं)? यह 1 कुंजी जोड़ी क्या थी? – bibscy

+0

@ बिब्स्सी इसका मतलब है कि जब मेरे पास, उदाहरण के लिए, 200 निजी ऐप्पल आईडी कुंजी, और 200 सार्वजनिक ऐप्पल आईडी कुंजी - तो मैंने केवल 1 निजी कुंजी और 1 सार्वजनिक कुंजी छोड़ी। मतलब है कि मैंने डुप्लिकेट हटा दिया है। –

1

जाओ परियोजना के लिए सेटिंग और फिर संपादक> सेटिंग बिल्ड जोड़ें> उपयोगकर्ता निर्धारित सेटिंग जोड़ें, और निम्नलिखित जोड़ें:

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES 

इस ध्वज हमारे साफ-निर्माण के लिए 65S के लिए 7 मिनट से बार संकलन गिरा जोड़ना एक 40KLOC स्विफ्ट परियोजना, चमत्कारी रूप से। यह भी पुष्टि कर सकते हैं कि 2 दोस्तों ने एंटरप्राइज़ प्रोजेक्ट पर समान सुधार देखा है।

मैं केवल यह मान सकते हैं Xcode 8.0 ## में बग के कुछ प्रकार ##

+0

क्या यह वही है, ** अनुकूलन स्तर ** * बिल्ड सेटिंग्स में सेट करने के रूप में - स्विफ्ट कंपाइलर *? और दुर्भाग्यवश यह मेरे लिए काम नहीं करता है ... ऐसा लगता है कि मेरे कंप्यूटर के साथ कोई समस्या हो सकती है (जैसे अन्य लोग परियोजना को जल्दी से बना सकते हैं) ... शायद किसी को इससे पहले सामना करना पड़ा है और जानता है कि इसे कैसे ठीक किया जाए (प्रारूप के अलावा आदि।)। –

+0

यह एक बार काम करता है ... – maxisme

0

डुप्लीकेट कुंजियों को हटाने इसके अलावा, मैं codesign में एक विशाल सुधार जब मैं xcode चाबियों का अभिगम नियंत्रण करने के लिए चयन

खुला "कीचेन पहुंच" "सभी आवेदनों इस आइटम तक पहुंचने की अनुमति दें", बदल नोटिस " कुंजी ", और प्रत्येक कुंजी पर दो बार टैप करें। "एक्सेस कंट्रोल" टैब पर आपके पास "इस आइटम तक पहुंचने के लिए सभी एप्लिकेशन को अनुमति दें" चुनने का विकल्प होगा।

+0

क्या वही परिणाम _Xcode_ (या कुछ _codesign_ ऐप का उपयोग कर सकते हैं) तक पहुंच प्रदान करने के साथ पूरा किया जा सकता है? मैं व्यक्तिगत रूप से सभी अनुप्रयोगों को मेरी चाबियों तक पहुंचने में सहज महसूस नहीं करता हूं। –

संबंधित मुद्दे