Xcode में संग्रह परियोजना गलत तरीके से मल्टी-एप्लिकेशन बंडल बनाती है


170

Xcode में मेरे प्रोजेक्ट को संग्रहीत करना, रिलीज़ के लिए मेरे मुख्य लक्ष्य को बंडल करने के बजाय एक बहु-अनुप्रयोग बंडल बना रहा है, जो कि मुझे चाहिए। विशेष रूप से, जब मैं आयोजक में अपने संग्रह को मान्य करता हूं, तो यह मुझे संदेश देता है:

"" एक प्रोजेक्टनेम] में एकल-बंडल एप्लिकेशन शामिल नहीं है या इसमें कई उत्पाद शामिल हैं। कृपया किसी अन्य संग्रह का चयन करें, या एकल-बंडल एप्लिकेशन बनाने के लिए अपनी योजना को समायोजित करें। "

ऐसा लगता है कि योजना में कुछ सेटिंग है जिसे समायोजित करने की आवश्यकता है, लेकिन मैं यह पता नहीं लगा सकता कि अन्य लक्ष्यों को शामिल करने का क्या कारण है।

मैं Xcode 4.0 का उपयोग कर रहा हूँ।


जवाबों:


251

ठीक है, मेरे अपने प्रश्न का उत्तर दे रहा हूं। बाहर मुड़ता है यह XCode 4 में आश्रित परियोजनाओं के साथ एक मुद्दा है। यदि आपके साथ ऐसा होता है, तो अपने सभी आश्रित परियोजनाओं (जैसे स्थैतिक पुस्तकालयों) के लिए बिल्ड सेटिंग्स पर जाएं और सुनिश्चित करें कि "परिनियोजन" के तहत "छोड़ें स्थापित करें" विकल्प सेट है। , हाँ।

यहाँ और अधिक विवरण: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
आप, साहब, मेरे हीरो हैं! मुझे यह आसानी से नहीं मिला: पी
एंड्रयू नैटोली

6
इसे "हाँ" में बदल दिया ... अभी भी विफल है। :(
जो डी 'एंड्रिया

8
छोड़ें स्थापित करने के लिए केवल आपके प्रोजेक्ट या लक्ष्य नहीं, स्थिर लाइब्रेरी पर हां पर सेट होने की आवश्यकता है। तदर्थ वितरण पर इस ब्लॉग पोस्ट app की दुकान बनाता करने के लिए समान रूप से लागू होता है और स्थापित छोड़ें पर एक अनुभाग है: musicalgeometry.com/?p=1237
jj0b

8
कुछ पुस्तकालयों (जैसे कि कोरप्लॉट) को आपको अपने बिल्ड चरण के कॉपी हेडर्स सेक्शन को भी बदलना होगा। तो सुनिश्चित करें कि आप रयान के जवाब को भी देखते हैं।
टिम स्वस्त

2
मुझे टार्गेट "बिल्ड चरणों" में सभी हेडर फाइल (स्टैटिक लाइब्रेरी की) को भी स्थानांतरित करना है, "कॉपी हेडर्स" में मैंने उन्हें "पब्लिक" से "प्रोजेक्ट" में स्थानांतरित कर दिया।
Hlung

151

इस समस्या को हल करने के लिए उप-परियोजना (नों) में तय की जाने वाली दो चीजें:

  1. जैसा कि Jared की खोज की गई थी, बिल्ड सेटिंग्स के तहत, "Skip Install" को "Yes" पर सेट करें
  2. बिल्ड चरणों के तहत, कॉपी हेडर्स अनुभाग की जाँच करें। यदि कोई भी निजी या सार्वजनिक के रूप में सूचीबद्ध हेडर फ़ाइलें हैं, तो उन्हें प्रोजेक्ट अनुभाग में खींचें।

7
मैं सच में तुमसे प्यार करता हूँ दोस्त! : डी
एरियलकैमुस

5
मैंने सभी "स्किप इंस्‍टॉल" सेटिंग को ठीक किया, लेकिन जो मुझे याद आ रहा था वह था कॉपी हेडर सेक्शन, धन्यवाद!
थॉमस आइंवलर

2
मैं तीन20 का उपयोग कर रहा हूं। इस परियोजना में निजी या सार्वजनिक के रूप में सूचीबद्ध हेडर फाइलें हैं, लेकिन अगर मैं उन्हें परियोजना खंड में स्थानांतरित करता हूं तो यह संकलन नहीं करता है। कोई उपाय?
ब्रीसाइट नाइट

19
यदि आप इस Xcode मुद्दे पर प्राप्त करते हैं, तो भी तीन20 का उपयोग करना बंद कर दें। मैं पूरी तरह से गंभीर हूँ!
एडम एबर्बेक

2
यदि आपके पास कई पुस्तकालय परियोजनाएं हैं जैसे कि हम करते हैं और एक कठिन समय लगा रहे हैं जिससे पता चलता है कि कौन सी लाइब्रेरी की स्किप इंस्टा न के बराबर है या कौन सी हेडर फाइलें समस्या का कारण बन रही हैं: संग्रह का चयन करें और वितरित बटन पर क्लिक करें। 'सेव बिल्ट प्रोडक्ट्स' विकल्प चुनें। अगला मारो और बचाओ। खोजक में बनाई गई निर्देशिका ब्राउज़ करें। 'लाइब्रेरीज़' की उपनिर्देशिका उन लाइब्रेरियों की पहचान करेगी, जिन्हें आपको स्किप इंस्‍टॉल टू यस सेट करना होगा। Usr / लोकल / शामिल है अपराधी हेडर फ़ाइलों की पहचान करेगा जिन्हें आपको सार्वजनिक से परियोजना में स्थानांतरित करने की आवश्यकता है।
सुनील गौड़ा

10

मैंने इसे मेरे लिए काम करने के लिए निम्नलिखित किया:

  1. तीन20 स्टैटिक लाइब्रेरी के लिए, मैंने मुख्य प्रोजेक्ट के भीतर फाइलों को शामिल करने के लिए कोकोपोड्स का इस्तेमाल किया .. यह सिर्फ तीन परेशानी से छुटकारा दिलाया जो तीन20 मुझे दे रहे थे (और वे बहुत सारे हैं ..) btw मैंने Nimbus के साथ तीन20 की जगह लेने की कोशिश की .. निंबस कुछ सुविधाओं की कमी थी जो मेरी परियोजना के लिए तीन20 का उपयोग कर रही थी .. इसलिए निंबस मददगार नहीं था।
  2. अन्य सभी उप परियोजनाओं / स्थैतिक पुस्तकालयों के लिए बिल्ड सेटिंग्स के तहत हां पर जाएं
  3. सबसे महत्वपूर्ण बात: उप पुस्तकालयों के तहत .. निर्माण चरणों के तहत यह सुनिश्चित किया कि मैं प्रतिलिपि फ़ाइलों गंतव्य से बदल गया था Absolute pathकरने के लिए products directory

और वह यह था!

संकेत: आपत्तिजनक फ़ाइलों का एक विचार प्राप्त करने के लिए जो आपके संग्रह के कारण एक ipa के बजाय एक संग्रह फ़ाइल बनाने के लिए कर रहे हैं:

  1. संग्रह का चयन करें और वितरित बटन पर क्लिक करें।
  2. 'सेव बिल्ट प्रोडक्ट्स' विकल्प चुनें।
  3. अगला मारो और बचाओ।
  4. खोजक में बनाई गई निर्देशिका ब्राउज़ करें।
  5. 'लाइब्रेरीज़' की उपनिर्देशिका उन लाइब्रेरियों की पहचान करेगी, जिन्हें आपको स्किप इंस्‍टॉल टू यस सेट करना होगा।
  6. कुछ मामलों usr/local/includeमें अपराधी हेडर फ़ाइलों की पहचान करेंगे जिन्हें आपको सार्वजनिक से परियोजना में स्थानांतरित करने की आवश्यकता है या जिन फ़ाइलों को आपको पूर्ण पथ से उत्पाद निर्देशिका में बदलना है। लेकिन वह निर्देशिका (यानी usr / स्थानीय / शामिल) आपके उप-निर्देशिका निर्देशिका संरचना के आधार पर भिन्न होती है

मैं आपको 10 तारे दूंगा, समाधान की एनआर मैं पढ़ता हूं जो कि मदद करता है। मैं सिर्फ चरण 6 पर मिली फाइलों पर क्लिक करता हूं और उन्हें सार्वजनिक से परियोजना तक लक्ष्य सदस्यता क्षेत्र में चिह्नित करता हूं, किसी भी चीज की आवश्यकता नहीं है।
क्रिस्टी बालू

मैं खुशी से मदद कर सकता है! मेरे द्वारा लिखे जाने का कारण यह था कि b / ci आपके द्वारा किया गया था .. मैंने पढ़ा जैसे कि शायद 20 उत्तर इससे पहले कि मैं समझने लगा कि क्या चल रहा है .. :)
abbood

क्या कोई कृपया चरण 6 समझा सकता है? मुझे समझ में नहीं आ रहा है कि "usr / लोकल / इनकाउंटर अपराधी हेडर फाइल्स की पहचान करेगा" का अर्थ है और मुझे उन फ़ाइलों की जाँच कहाँ और कैसे करनी चाहिए
आंद्रेई एफ

@ CristiBăluță सेटिंग्स और मेनू में आपने फ़ाइलों को कहाँ और कैसे पाया? मेरे पास XCode 11.2.1 के साथ एक ही मुद्दा है और मुझे xcode के साथ अधिक अनुभव नहीं है। धन्यवाद।
आंद्रेई एफ

जो मैंने पाया है वह है / usr / स्थानीय / शामिल (संग्रह पुस्तकालयों फ़ोल्डर के साथ) के अंदर एक फ़ोल्डर है, लेकिन मेरे सामान्य संग्रह में से कोई नहीं है
आंद्रेई एफ

1

मेरे पास एक कॉपी फाइल का निर्माण चरण था जिसके बारे में मैं भूल गया (कुछ फोंट की प्रतिलिपि ~ / पुस्तकालय / फ़ॉन्ट्स)। इस निर्माण चरण को हटाने के बाद, इसने ठीक काम किया।

यदि उपरोक्त में से कोई भी उत्तर समस्या को ठीक नहीं करता है, तो मैं संग्रहकर्ता को खोजकर्ता को निर्यात करने और एक नज़र रखने की सलाह देता हूं कि .app बंडल के बाहर क्या है।

संपादित करें: https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not-contain-a-single-bundle ' देखें


0

मुझे भी यही समस्या थी "[प्रोजेक्टनेम] में एकल-बंडल एप्लिकेशन शामिल नहीं है या इसमें कई उत्पाद हैं। कृपया किसी अन्य संग्रह का चयन करें, या एकल-बंडल एप्लिकेशन बनाने के लिए अपनी योजना को समायोजित करें।" Xcode5 में अपग्रेड करने के बाद।

समस्या यह थी कि 'रिलीज' के लिए मेरी बिल्ड सेटिंग्स में खेतों का एक गुच्छा खाली था। मुझे लगता है कि xcode4 स्वचालित रूप से डिबग सेटिंग में बदल गया है।

awyays - मेरा फिक्स उन सभी 'रिलीज़' सेटिंग्स को ढूंढना था जो रिक्त थे और उन्हें डीबग सेटिंग पर सेट किया गया था। विशेष रूप से यह Info.plist फ़ाइल सेटिंग थी।

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