Xcode में iOS ऐप आर्काइव जेनरेट नहीं कर सकता


175

मुझे एक एप्लिकेशन से iOS ऐप संग्रह बनाने में समस्या है। एप्लिकेशन ठीक संकलित करता है और यहां तक ​​कि सिम्युलेटर में भी काम करता है। अब मैं सोम तदर्थ परीक्षण करना चाहता था और iOS ऐप आर्काइव उत्पन्न नहीं कर सकता था। जब मैं उत्पाद पर क्लिक करता हूं -> पुरालेख यह एक सामान्य एक्सकोड संग्रह बनाता है। क्या कोई मेरी मदद कर सकता है। मुझे उल्लेख करना चाहिए, कि मैंने पहले ही इस एप्लिकेशन का एक iOS ऐप आर्काइव तैयार किया है। यह सिर्फ किसी कारण से iOS आर्काइव जेनरेट करने के लिए रुका है। बहुत बहुत धन्यवाद।


7
हालाँकि यह सवाल xcode से संग्रह तैयार करने के बारे में है, फिर भी मैंने इस समस्या का सामना किया xcodebuild। गंतव्य को निर्दिष्ट करने के लिए समाधान है:xcodebuild -destination generic/platform=iOS
db42

धन्यवाद @ db42, यह किया है!
फैब

1
क्या आप संकल्प पर विस्तृत कर सकते हैं-आप कहां बदलाव करते हैं?
jlo-gmail

यदि आपके पास प्रोजेक्ट> टारगेट> बिल्ड चरणों> लक्ष्य निर्भरता में कोई .xcodeproj फाइलें हैं, तो इसे वहां से हटा दें और फिर अपना आईपीए बनाएं। इससे मेरा काम बनता है। चीयर्स
कल्पेश पंचसारा

जवाबों:


316

बिल्ड सेटिंग्स की जाँच करें:

  1. छोड़ें स्थापित मुख्य परियोजना लक्ष्य के लिए नहीं है
  2. स्थापित छोड़ें फ्रेमवर्क (उप-परियोजनाओं) लक्ष्यों के लिए हां है
  3. उप-परियोजनाओं के लिए बिल्ड चरणों में, कॉपी हेडर्स को प्रोजेक्ट में होना चाहिए, न कि सार्वजनिक (स्थैतिक पुस्तकालय बनाने पर लागू नहीं होता है)
  4. परिनियोजन के अंतर्गत स्थापना निर्देशिका मान्य है (/ उदाहरण के लिए अनुप्रयोग)

2
यह सबसे पूर्ण उत्तर है जो उपरोक्त आंशिक उत्तरों को शामिल करता है। धन्यवाद एलेक्स एल! मुझे लगता है कि इस सवाल का चुना हुआ जवाब होना चाहिए।
ब्रैंडन

3
एक मेटा सवाल के रूप में, आपने यह कैसे पता लगाया? ऐसा लगता है कि मैं अपने सभी बिल्ड-संबंधी प्रश्नों के लिए स्टैकओवरफ़्लो पर निर्भर हूं।
फिलिप्पड १६'१३ को

4
सुंदर! मुझे लगा कि यह प्रोविजनिंग प्रोफाइल के साथ एक समस्या थी, लेकिन इसने बहुत अच्छा काम किया। उप परियोजना मार्ग- me / MapView की मैपबॉक्स शाखा थी। कॉपी हेडर राज्यों के नीचे के पद के रूप में महत्वपूर्ण था, यह सब प्रोजेक्ट के बिल्ड चरणों में पाया जा सकता है।
rcarver

7
# 3 ने मेरी समस्या को ठीक कर दिया, लेकिन मेरे संग्रह को iOS ऐप आर्काइव के रूप में बनाए जाने से पहले मुझे निजी से प्रोजेक्ट में ले जाने की भी आवश्यकता थी।
थॉमस हजाक

4
तकनीकी रूप से, समस्या यह नहीं है कि हेडर कॉपी हेडर्स के तहत सार्वजनिक हैं, यह है कि बिल्ड सेटिंग्स> सार्वजनिक हेडर फ़ोल्डर पथ डिफ़ॉल्ट के लिए सेट है /usr/local/include। यदि आप एक स्थिर लाइब्रेरी का निर्माण कर रहे हैं तो हेडर सार्वजनिक होना चाहिए, इसलिए यह अधिक सही है यदि # 3 सार्वजनिक हेडर फ़ोल्डर पथ को कुछ अधिक समझदार जैसे बदलना है include/$(TARGET_NAME)। @CopperCash नीचे दिए गए उत्तर में इसे नोट करता है।
bcattle

75

ऐसा तब हो सकता है जब आपने एक फ्रेमवर्क / लाइब्रेरी जोड़ा है ... आपको उस लाइब्रेरी की लक्ष्य-> सेटिंग को संपादित करना होगा और 'स्किप इंस्टाल' सेटिंग को 'यस' पर सेट करना होगा। जब आप पुनः संग्रह करते हैं, तो XCode को एक 'जेनेरिक xcode संग्रह' के बजाय 'iOS ऐप आर्काइव' को फिर से बनाना शुरू करना चाहिए।


लेकिन "स्किप इन्स्टॉल" xcode 4.4.1 में उपलब्ध नहीं है, कम से कम मैं अपने xcode में स्किप इंटाल को खोजने में असमर्थ हूँ
मशहदी

2
वही जोड़ा बंडलों पर लागू होता है।
मार्क होर्गन

62

इसके अलावा स्किप इंस्‍टॉल टू यस और मामले में आपने अपने ऐप प्रोजेक्‍ट के भीतर एक और परिवाद / फ्रेमवर्क परियोजना खोली है, आपको बिल्ड चरण / कॉपी हेडर में सार्वजनिक से परियोजना में हेडर (यदि कोई हो) को स्थानांतरित करना है ।

अपने lib / framwork लक्ष्य का चरण बनाएं


3
मैं बस उम्मीद खो देने वाला था, क्योंकि स्किप इंस्‍टॉल टू यस ने मेरे लिए काम नहीं किया। प्रोजेक्ट करने के लिए हेडिंग कॉपी करने ने मेरे लिए ट्रिक बनाई। धन्यवाद!
ksm

10
दोषपूर्ण Xcode सबप्रोजेक्ट को स्थानीय बनाने में आपकी मदद करने के लिए, आप खोजक में जेनेरिक Xcode संग्रह दिखा सकते हैं और पैकेज का पता लगा सकते हैं। .Xcarchive के अंदर, आप उत्पादों / usr / स्थानीय / में दोषपूर्ण हेडर देखेंगे।
महाशय

1
यह सार्वजनिक पेंच के लिए हेडर की प्रतिलिपि बनाने के लिए कुछ फ़ाइलों को क्यों रखा जाएगा?
mskw

mskw, मुझे लगता है कि यदि निर्मित की गई कलाकृतियों में एक या अधिक सार्वजनिक शीर्ष लेख हैं, तो यह "उपकरण परिनियोजित" संग्रह (iOS App संग्रह जहाँ आप IPA उत्पन्न करते हैं) नहीं बन सकता है। यह एक Xcode प्रोजेक्ट संग्रह है। धन्यवाद
ebtokyo

1
धिक्कार है, धन्यवाद, ths ने मेरे लिए काम किया .. मुझे आश्चर्य है कि आप इस तरह के समाधान खोजने के लिए कैसे नरक का प्रबंधन करते हैं :)
Fabio Napodano

45

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

  1. मेरे पास तीन20 स्थिर पुस्तकालय थे, मैंने मुख्य परियोजना के भीतर फाइलों को शामिल करने के लिए कोकोपोड्स का उपयोग किया
  2. अन्य सभी उप प्रोजेक्ट / स्टैटिक लाइब्रेरी के लिए स्किप इंस्टाल का अनुसरण किया और ऊपर बताए अनुसार कॉपी हेडर को पब्लिक से प्रोजेक्ट में बदल दिया
  3. सबसे महत्वपूर्ण बात: प्रत्येक पुस्तकालय में आपकी परियोजना का उपयोग चरणों के निर्माण के लिए किया जाता है -> फ़ाइलों की प्रतिलिपि बनाएँ और सुनिश्चित करें कि गंतव्य से बदल दिया गया Absolute pathहै products directory। नोट: लाइब्रेरी को इस त्रुटि के कारण खोजने के लिए अपनी खोज को संकीर्ण करने के लिए नीचे दिए गए संकेत देखें।

और वह यह था!

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

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

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

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

इसलिए मैं इसे क्रिप्टो और ssl पुस्तकालयों के साथ कुछ करने के लिए कह सकता हूँ .. उनके लिए खोज:

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

मुझे एहसास हुआ कि मैं हाँ पर स्थापित करने के लिए स्थापित करने के लिए भूल गया।


महान संकेत! मैंने कुछ रूपरेखा हेडर बदलकर 'प्राइवेट' कर दिए थे; किसी कारण से, यह उन्हें नकल करने के लिए प्रेरित कर रहा था ./usr/local/include
बेन मोशर

1
हमेशा @BenMosher :) की मदद करने में सक्षम होना खुशी की बात है
14

1
सबसे अच्छा जवाब मुझे मिला। टिप के लिए धन्यवाद, मेरा दिन बचाया। !
नीयन

निश्चित रूप से मैं जिस जवाब की तलाश में था - निर्माण उत्पादों की बचत ने मुझे समस्या के सटीक कारण की ओर इशारा किया।
डेनिस एल

"सेव बिल्ट प्रोडक्ट्स" के साथ यह व्यापक जवाब इतना मददगार है - @abood, आपका बहुत-बहुत धन्यवाद। आशा है कि मैं किसी दिन एहसान वापस कर सकता हूं।
स्कॉट कॉर्सडेन

21

यदि आप संग्रह निर्यात करते हैं, तो इसे खोलें और उत्पाद/urs/local/include में देखें यह सुझाव आज़माएं :

प्रत्येक पॉड में, अंडर Packaging, Private Headers Folder Pathऔर Public Headers Folder Pathसेट किया गया है /usr/local/include। अगर मैं उन्हें साफ कर देता हूं तो मुझे एक वैध संग्रह मिल जाता है।

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

मेरे रिएक्टिव नेटिव ऐप को 0.11.0Xcode 7और कोकोआपोड्स में अपग्रेड करने के बाद मेरे लिए काम किया 0.39.0.beta.4


1
मैं पुष्टि कर सकता हूं कि यह काम करता है! जब तक आप निजी और सार्वजनिक हेडर दोनों रास्तों को खाली करना याद करते हैं। यह भी काफी आसान है, यदि आप बस सभी पॉड्स का चयन करते हैं, हेडर पथ की खोज करते हैं, तो उन्हें एक ही समय में साफ़ करें।
DIDs

1
मैं यह भी पुष्टि कर सकता हूं कि इस काम ने मुझे बहुत समय बचाया, यह तब हुआ जब मैंने अपने पॉड्स को 0.39.0.beta संस्करण में अपग्रेड किया
ब्रायन पी।

बहुत बढ़िया। मेरे लिए काम किया :) मैं डेढ़ दिन से संघर्ष कर रहा था। थैंक यू, थैंक यू, थैंक
यू

मुझे लगता है कि यह वह है जिसने मेरे लिए Xcode 7.0 iOS9 काम किया। मेरे पास कोई कोकोपोड्स नहीं हैं, लेकिन इसने समस्या को किसी से कम नहीं किया। धन्यवाद आदमी
ज्योफ एच।

इसके अतिरिक्त, मुझे इसके लिए अपने WatchKit एक्सटेंशन और ऐप पर काम करने के लिए SKIP_INSTALL को Yes पर सेट करना था।
स्नोमैन

12

यदि आप CocoaPods के साथ-साथ WatchKit या टुडे एक्सटेंशन का उपयोग कर रहे हैं, तो CocoaPods रेपो पर एक खुला मुद्दा है जो यह बताता है कि आपकी समस्या क्या हो सकती है।

मेरे लिए समाधान यह था Copy Pod Resourcesकि वॉचकेट एक्सटेंशन और टुडे एक्सटेंशन टारगेट के तहत चरण को हटा दिया जाए Build Phases। एक बार ऐसा करने के बाद परियोजना संकलित और संग्रहीत हो गई।

आशा है कि यह किसी की मदद करता है, यह मुझे एक पूरे दिन के लिए स्टम्प्ड था!


1
@ लुईस 42 हमेशा एक इनाम जोड़ सकता है;)
विद्रोही 95

एक विकल्प न देखें, आपकी टिप्पणी पर एक वोट अप करना होगा;)
lewis

@ लुईस 42 आपको प्रश्न में इनाम जोड़ना होगा और उसे उत्तर देने के लिए पुरस्कार देना होगा
rebello95

@ rebello95, आप रॉक डूड!
मैट

10

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

बाद में संपादित करें:0.38.2 इसे ठीक करने के लिए अद्यतन भी किया जाएगा। यहाँ इस समस्या के कारण के बारे में अधिक जानकारी: Cocoapods 0.38.1 वैध पुरालेख बनाने में विफल रहा


3
मैंने अपडेट किया 0.38.2और अभी भी समस्या है। क्या आप Xcode 7 पर हैं?
पोर्टर होसकिन्स

@ पोर्टरहॉस्किन्स मैंने अभी इस मुद्दे को लिखा है क्योंकि Xcode 7 एक ही प्रोजेक्ट से एक वैध संग्रह नहीं बनाएगा जो Xcode 6 में एक वैध संग्रह बनाता है । मैं कोको पोड्स 0.38.2 का उपयोग कर रहा हूं, जब Xcode 6 का उपयोग करना सब ठीक है, लेकिन Xcode 7 के साथ संग्रह सही ढंग से नहीं बना है। क्या आपने यह देखने के लिए अपनी फ़ोल्डर संरचना की जांच की है कि क्या आपके पास पैकेज में अपने .app के बाहर एक .appex फ़ाइल है?
ध्रुवीय भालू

मेरे पास एक ढांचा है /Library/Frameworks। मुझे लगता है कि Google के कोको पॉड्स को डायनामिक फ्रेमवर्क के रूप में नहीं बनाया जा सकता है। यह github.com/CocoaPods/CocoaPods/issues/3889 के
पोर्टर होस्किन्स

3
मैं बिल्ड फेज / हेडर्स में हर पॉड हेडर के लिए पब्लिक से प्रोजेक्ट सेक्शन में चला गया और इसने काम किया। तो वास्तव में समस्या कोकोआपोड्स में हो सकती है।
डेनिस कुतलुबाएव

7

हालाँकि मैं Xcode5 का उपयोग कर रहा हूं और मेरे लिए यह क्या छांट रहा है बिल्ड स्कीम को संपादित कर रहा था - उपरोक्त सभी सुझावों की कोशिश करना जो लागू थे, मेरे मामले में मदद नहीं करते थे।

मेरे पास दो लक्ष्य थे, "ऐप" और "ऐप फ्री"। जेनेरिक आर्काइव के साथ मेरी समस्याएं तब हुईं जब मैं फ्री संस्करण को संग्रहित करने की कोशिश कर रहा था, जिसे मैंने ऐप के 'सामान्य' संस्करण के बाद जोड़ा। मेरे मामले में, जब मैंने टूलबार में अपनी स्कीम का चयन किया और एडिट स्कीम को चुना ... मैंने देखा कि बिल्ड सेक्शन के दो लक्ष्य थे, अर्थात् ऐप और ऐप फ्री।

मैंने ऐप के सभी कॉलम अनचेक कर दिए, केवल ऐप फ्री के कॉलम चेक किए और ओके पर क्लिक किया। अगली बार जब मैंने प्रोडक्ट> आर्काइव चुना तो मुझे एक जेनेरिक आर्काइव के बजाय अपना ऐप फ्री मिला। :)


7

यदि आपके पास केवल एकल परियोजना है, तो शायद यह समाधान उपयोगी होगा। यह समस्या तब हुई थी, जब मैंने लक्ष्य को दोहराया था। परिणामस्वरूप मेरे पास दो लक्ष्य समानांतर निर्मित थे। यह मुद्दा पैदा कर रहा था। सामान्य IOS संग्रह बनाया गया था।

निर्मित समानांतर को बंद करने के लिए जाना

  • योजनाएं प्रबंधित करें,
  • योजना संपादित करें,
  • बिल्ड,
  • अन्य लक्ष्य निकालें।

5

IOS 9 और Xcode 7 में अपडेट होने के बाद मुझे यह समस्या हुई। जोश एच के समाधान ने मेरे लिए काम किया:

प्रत्येक पॉड में, पैकेजिंग के तहत, निजी हेडर फ़ोल्डर पथ और सार्वजनिक हेडर फ़ोल्डर पथ / usr / स्थानीय / शामिल करने के लिए सेट है। अगर मैं उन्हें साफ कर देता हूं तो मुझे एक वैध संग्रह मिल जाता है।

मैंने अपने पॉडफाइल के लिए स्वचालित रूप से ऐसा करने के लिए एक पोस्ट इंस्टॉल स्क्रिप्ट भी बनाई!

    post_install do |installer_representation|
        installer_representation.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
                config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
            end
        end
    end

बस इसे अपने पॉडफाइल के निचले हिस्से में जोड़ें और चलाएं pod install


5

मेरे पास अपने कार्यक्षेत्र में कई परियोजनाएं हैं, (जीटीएल, पॉड्स और मेरी मुख्य परियोजना) और यही मेरे लिए काम करती है:

प्रोजेक्ट का चयन करें, वहाँ 2 प्रकार होंगे, वहाँ प्रोजेक्ट है और वहाँ लक्ष्य है

उन परियोजनाओं के लिए जो आपकी मुख्य GTLया जैसी नहीं हैं PODS:

परियोजनाएं:

Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

लक्ष्य:

Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

मुख्य परियोजना के लिए (जिसे आमतौर पर आपके उत्पाद का नाम दिया गया है):

परियोजनाएं:

Skip Install = NO
Installation Directory = /Applications

लक्ष्य:

Skip Install = NO
Installation Directory = /Applications

प्रत्येक प्रोजेक्ट पर ios परिनियोजन लक्ष्य की जाँच करें और सुनिश्चित करें कि वे सभी समान हैं।


इसे स्टेप बाई स्टेप समझाने के लिए थैंक्स। इससे वास्तव में मुझे अपनी समस्या हल करने में मदद मिली।
अर्सलान

4

मेरे पास यह मुद्दा था। मेरे मामले में, यह आईओएस ऐप की निर्भरता के रूप में मैक ऐप लक्ष्य को रखने के कारण हुआ।

इस तरह से सेटअप करने का कारण यह था कि मैक ऐप आईओएस ऐप के लिए कुछ डेटा उत्पन्न करने के लिए इस्तेमाल किया जाने वाला उपकरण था, जिसे तब बंडल में शामिल किया गया था।

मुझे उस निर्भरता को दूर करना था और आईओएस ऐप को स्वयं बनाने से पहले अलग से टूल का निर्माण करना था।


Lippd जैसी लाइब्रेरी ios और osx दोनों के टार्गेट के साथ आती हैं, मैं osx का टारगेट हटाना भूल गया ... doh
james_alvarez

4

अपने मुख्यतः ऑब्जेक्टिव-सी प्रोजेक्ट में स्विफ्ट कोड को शामिल करने के बाद ही मुझे अपने परिदृश्य में "गलत जेनेरिक आर्काइव" मिल रहा था। समस्या निवारण और संग्रह फ़ाइल की जांच के बाद कि Xcode बाहर थूक रहा था, मैंने देखा किSwiftSupport थूक फ़ोल्डर (स्विफ्ट रनटाइम के लिए आवश्यक dylibs के साथ) मेरे संग्रह में एक अलग स्थान पर एक वैनिला ब्रांड-नई स्विफ्ट ऐप संग्रह से था। ।

मैंने Installation Directoryनिर्माण सेटिंग को देखा और देखा कि यह मेरी परियोजना में एक कस्टम पथ पर सेट है। मैंने बस इसे हटा दिया (इसके सामान्य मूल्य पर सेटिंग)/Applications ) और अगला बिल्ड -> पुरालेख मैंने उम्मीद के मुताबिक काम किया और मुझे एक उचित iOS ऐप आर्काइव दिया।

टी एल; DR: सुनिश्चित करें कि आपकी Installation Directoryबिल्ड सेटिंग /Applicationsअपने ऐप में स्विफ्ट कोड को शामिल करते समय इसके डिफ़ॉल्ट मान पर सेट है , खासकर यदि आप एक पुराने प्रोजेक्ट फ़ाइल के साथ शुरू कर रहे हैं जिसमें कुछ अप्रत्याशित विरासत सेटिंग्स हो सकती हैं।


3

दूसरों को उसी यात्रा से बचाने के लिए यहां छोड़कर।

मैंने पाया कि मुझे अपने कार्यक्षेत्र में भी स्थैतिक पुस्तकालय लक्ष्य से एक ही कॉपी पॉड संसाधन निर्माण चरण को हटाने की आवश्यकता थी।


ऊपर बहुत सारे सामान की कोशिश करने के बाद, इसने मेरे लिए काम किया (Xcode 7)
हम्फ्रीज

2

एलेक्स एल के जवाब के अलावा।

पॉइंट 3. der बिल्ड सेटिंग्स ’बदलें -> Hea पब्लिक हैडर फोल्डर पाथ’ को xxx शामिल / xxx ’करने के लिए भी काम करता है।


यह ऊपर # 3 से अधिक सही है। यदि आप स्थैतिक पुस्तकालय का निर्माण कर रहे हैं तो आपके हेडर सार्वजनिक होने चाहिए
bcattle

2

यदि उपरोक्त में से किसी ने भी आपकी मदद नहीं की ... बहुत समय के बाद ......।

मैंने बंडल संस्करण के लिए Info.plist में मान को हटा दिया क्योंकि मैं सिर्फ बंडल संस्करण लघु 1.0 से काफी खुश था।खराब। यह मत करो।

* ध्यान दें कि मैंने वास्तव में इसे UI में संपादित करके दाईं ओर किया था ताकि यह महसूस न हो कि यह Info.plist फ़ाइल में एक खाली कुंजी डाल देगा। मुझे लगता है कि यह अमान्य है। मेरे बंडल को संग्रहित करते समय अन्य मदों के रूप में दिखाया गया था और कोई आइकन नहीं था, और मैं कहीं भी अपलोड नहीं कर सका।

यह Info.plist में अमान्य मानों को उबालता है। यदि यह एक वैध संग्रह नहीं है, तो एक पुराने संग्रह को अनज़िप करने और अपने वर्तमान को अधिलेखित करने / छोड़ने की कोशिश करें और देखें कि संग्रह को पुनर्निर्माण करते समय इसे ठीक करता है या नहीं।


1
  1. सेटिंग पर जाएं और जोड़ें

    कोड हस्ताक्षर एंटाइटेलमेंट के लिए yourAppName / Resources / dist.plist

  2. IOS डिवाइस या बिल्ड लक्ष्य के रूप में चयनित एक वास्तविक डिवाइस के साथ cmd + B दबाएं

  3. जब किया -> "उत्पाद" फ़ोल्डर में स्क्रॉल करें और yourAppName.app पर राइट-क्लिक करें

  4. "खोजक में दिखाएँ" चुनें

  5. नाम पेलोड के साथ एक फ़ोल्डर बनाएँ ( राजधानी "पी" )

  6. कॉपी अपने पेलोड फ़ोल्डर में yourAppName

  7. अपने पेलोड फ़ोल्डर से एक ज़िप बनाएं

  8. ज़िप को अपने AppName.ipa का नाम बदलें

किया हुआ


1

सब कुछ के बारे में कोशिश करने के बाद:

  • साफ, पुरालेख
  • DerivedData, संग्रह हटाएं
  • Xcode को पुनः आरंभ करें (मैं XCode7 का उपयोग कर रहा था), आर्काइव
  • उपरोक्त संयोजन ...

मैंने तब देखा कि मेरा बूट पार्टीशन 'फ्री डिस्क स्पेस पर कम है' ... लगभग 1GB या तो। मैंने रिबूट किया, फिर लगभग 18GB मुफ्त मिला।

फिर Xcode और प्रोजेक्ट खोला, आर्काइव का प्रदर्शन किया ... और आश्चर्यजनक रूप से (एक आर्काइव बनाने की कोशिश के एक घंटे के बाद) मुझे आखिरकार एक नॉन जेनरिक आर्काइव मिल गया।

कोई विचार नहीं है अगर इसकी एक फ्री डिस्क समस्या है जो इसे तय करती है या इसे ठीक करने वाले macOS का रिबूट है, लेकिन यह मेरे लिए काम करता है।


1

यदि आपके पास प्रोजेक्ट> टारगेट> बिल्ड चरणों> लक्ष्य निर्भरता में कोई .xcodeproj फाइलें हैं, तो इसे वहां से हटा दें और फिर अपना आईपीए बनाएं। इससे मेरा काम बनता है। चियर्स

आप यहाँ उत्तर प्राप्त कर सकते हैं: xcode iOS App संग्रह के बजाय सामान्य xcode संग्रह बना रहा है


0

मेरे मामले में, मुझे FMDB और BlocksKit दोनों को स्थैतिक पुस्तकालयों में स्थानांतरित करना पड़ा। पहले वे सबप्रोजेक्ट के रूप में बनाए गए थे। याद रखें कि आप सार्वभौमिक पुस्तकालयों को बनाने के लिए लाइपो का उपयोग कर सकते हैं। अंतिम उत्पादों का निर्माण करते समय, सिम्युलेटर कोड स्वचालित रूप से छीन लिया जाएगा।


0

इसका एक अन्य संभावित कारण अलग-अलग प्लेटफ़ॉर्म के लिए परियोजनाओं के लिए "लक्ष्य निर्भरता" में संदर्भ होना है। मेरे विशेष मामले में, मैं एक प्रोजेक्ट पर काम कर रहा था जो OSX और iOS के लिए कोड साझा करता है। IOS के एक लक्ष्य में, मैंने गलती से निर्भरता के रूप में OSX लक्ष्य जोड़ दिया था।


0

पूरी तरह से होने के लिए, मैं अपना समाधान पोस्ट कर रहा हूं।

मैंने उसी समस्या का अनुभव किया जो Xcode 5.1.1 (5B1008) में एक iOS प्रोजेक्ट का आर्काइव बनाने की कोशिश कर रही थी। उपरोक्त सुझावों में से किसी ने भी समस्या को निर्धारित नहीं किया था, और उनमें से ज्यादातर अप्रासंगिक थे (मैंने किसी भी फ्रेमवर्क को नहीं जोड़ा था, और मेरे बिल्ड चरणों के कॉपी हेडर अनुभाग में कोई सार्वजनिक प्रविष्टि नहीं थी)।

मेरे मामले में, समस्या को ठीक करना मेरी परियोजना को बंद करना, मेरे द्वारा पहले किए गए किसी भी संग्रह को हटाना, प्राथमिकताएं> खातों में जाना, मेरे डेवलपर खाते को निकालना, एक्सकोड को छोड़ना, फिर से भरना, मेरे डेवलपर खाते को फिर से जोड़ना, पुरालेख प्रक्रिया शुरू करना। फिर। इससे मेरी समस्या तुरंत ठीक हो गई।


0

एक और उपाय, क्योंकि ऊपर वाले ने मेरे लिए काम नहीं किया ...

बदल दिया User Header Search Paths(मुझे लगता है Header Search Pathsकि बस सुरुचिपूर्ण ढंग से काम करेगा) "$(BUILT_PRODUCTS_DIR)/BlocksKit"

पृष्ठभूमि :

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


0

जिस तरह से इसने मेरे लिए काम किया (Xcode 5) मेरे 2 लक्ष्य थे और जब मैंने इस योजना को संपादित किया, तो योजना संपादक के बाएँ फलक पर, आपको [BUILD, RUN, TEST, PROFILE XXX.APP, ANZYZE, ARCHIVE दिखाई देगा ] BUILD फलक से, आप अपने प्रोजेक्ट लक्ष्य को एक सूची में सूचीबद्ध देखेंगे। सबसे दाईं ओर आपको ARCHIVE चयन दिखाई देगा, सुनिश्चित करें कि केवल एक लक्ष्य संग्रह के लिए चुना गया है।

मेरे पास मेरे प्रोजेक्ट में चुने गए 2 लक्ष्य थे, मैंने केवल उस लक्ष्य को जांचा जो मैं उत्पाद में चाहता था, और यह काम कर गया!


0

मैंने XCode में पूरी तरह से ऐप प्रोजेक्ट खोलकर इस त्रुटि को हल किया है , अर्थात। कार्यक्षेत्र नहीं खोल रहा हैआवेदन और अन्य परियोजनाओं / पुस्तकालयों / चौखटे से युक्त ।

2 अलग परियोजना, एक रूपरेखा या साझा लाइब्रेरी और iOS एप्लिकेशन के बाद, मैं 2 अलग XCode खिड़कियां, प्रत्येक को खोलने के लिए सीधे खोलने के द्वारा किया था .xcodeproj आम के बजाय फ़ाइल .xcworkspace preperly निर्माण प्रत्येक के लिए, क्रम में।

एक अच्छा साइड इफेक्ट के रूप में, XCode अब मेरे द्वारा क्लीन करने के बाद हर प्रोजेक्ट के हर लक्ष्य का पुनर्निर्माण नहीं करता है , जिसके परिणामस्वरूप शोर्ट बिल्ड समय होता है।

पृष्ठभूमि: मैं एक खुला स्रोत एसडीके, और एक डेमो आईओएस एप्लिकेशन बना रहा हूं। मैंने दोनों को एक ही कार्यक्षेत्र में खोला था। स्थापना छोड़ें स्थापित करने के लिए हाँ एसडीके ठिकानों पर एक संग्रह बनाने से किसी को रोका जा सके, के रूप में यह खाली होगा, तो यह एक विकल्प नहीं था। सार्वजनिक हेडर के बजाय प्रोजेक्ट का उपयोग करने से हेडर फ़ाइलों को संग्रहित करने वाला संग्रह गायब हो जाएगा, इसलिए यह विकल्प भी नहीं था।


0

इसके लिए क्योंकि मैं एक कार्यक्षेत्र में काम कर रहा था। इस परियोजना को संग्रहीत किया गया लेकिन आयोजक विंडो में प्रदर्शित नहीं किया जाएगा। मैंने कार्यक्षेत्र को बंद कर दिया और परियोजना को अपने दम पर खोल दिया। आयोजक में संग्रहित खोला गया है ... आशा है कि यह मदद करेगा।


0

मेरे मामले में, मेरे पास एक कस्टम स्क्रिप्ट थी जो कुछ अस्थायी फ़ाइलों को कॉपी कर रही थी:

${TARGET_BUILD_DIR}/myTempDir

इसका मतलब है कि, अपनी सामग्री का निरीक्षण करने के लिए पुरालेख की जांच करने के बाद, मैंने सही .app फ़ाइल myTempDir फ़ोल्डर के बगल में पाया। एक बार जब मैंने स्क्रिप्ट को अन्यत्र सहेजने के लिए संशोधित किया तो चीजें छँट गईं।


0

$ $ (PROJECT_NAME) को ढाँचा में ढाँचा बनाने की कोशिश करें projet का Public Headers Folder Path। आपको लाइब्रेरी लक्ष्य की सेटिंग बनाने के लिए जाना है फिर सार्वजनिक हेडर फ़ोल्डर पथ को $ (PROJECT_NAME) हेडर के रूप में संपादित करना होगा।


0

यदि ccodeapods v.0.38.2 के साथ Xcode 7 का उपयोग किया जाता हैcopy pod resourcesअपने आज के एक्सटेंशन लक्ष्य से हटाने का प्रयास करें ।

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


0

मैंने अपने iOS ऐप के प्रोजेक्ट में OS X कमांड लाइन टूल जोड़ने के बाद इस समस्या का सामना किया, और कमांड लाइन टूल के लक्ष्य के लिए डिफ़ॉल्ट रूप से Skip Install को NO पर सेट किया गया था। चूँकि आप स्पष्ट रूप से iOS डिवाइस में OS X बाइनरी स्थापित नहीं कर सकते हैं, यह एक सामान्य Xcode संग्रह के लिए डिफ़ॉल्ट है। इस लक्ष्य के लिए YES पर सेटिंग छोड़ें स्थापित करने से समस्या ठीक हो गई।

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