2014-09-11 7 views
15

मेरे एक्सकोड प्रोजेक्ट में, मेरे पास 4 अलग-अलग योजनाएं हैं (प्रोड, देव, स्टेजिंग, स्टेजिंग 2) जो फोन पर इंस्टॉल होने वाले ऐप के बंडल पहचानकर्ता को बदलती हैं। इस तरह से मैं सभी 4 संस्करणों को तरफ से स्थापित कर सकता हूं, this technique के समान।एक अलग लक्ष्य से बंडल आईडी प्राप्त करें

अब मैं आईओएस 8 के लिए आज का विस्तार कर रहा हूं। यह एक नया लक्ष्य है जो अपने स्वयं के बंडल पहचानकर्ता की आवश्यकता है।

एक्सटेंशन के बंडल पहचानकर्ता जनक एप्लिकेशन की बंडल पहचानकर्ता के साथ उपसर्ग होना चाहिए, या एक चेतावनी फेंक दिया जाता है:

error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier. 

    Embedded Binary Bundle Identifier: com.company.app.TodayExtension 
    Parent App Bundle Identifier:  com.company.app.staging 

इस मामले में, एंबेडेड बाइनरी बंडल पहचानकर्ता com.company.app.staging.TodayExtension होना चाहिए।

क्या कोई तरीका है कि मैं अपने आज के विस्तार लक्ष्य को कॉन्फ़िगर कर सकता हूं ताकि पहले बंटल पहचानकर्ता को पैरेंट लक्ष्य के बंडल पहचानकर्ता को देख सकें? शायद एक कस्टम रन स्क्रिप्ट बिल्ड चरण के माध्यम से?

+1

क्या आप इस समस्या को हल करने के बारे में अधिक विस्तार से समझा सकते हैं? नीचे जाफर के जवाब में, क्या आप किसी भी तरह से योजनाओं को स्विच करके PARENT_APP_BUNDLE_IDENTIFIER सेट करने में सक्षम थे, और यदि ऐसा है तो कैसे? या अन्यथा आपने प्रत्येक लक्ष्य (एक्सटेंशन लक्ष्य सहित) में बंडल आईडी और PARENT_APP_BUNDLE_IDENTIFIER के लिए क्या निर्दिष्ट किया था? धन्यवाद! परियोजना सेटिंग्स में – qix

+3

| सेटिंग्स बनाएँ | उपयोगकर्ता परिभाषित, PARENT_APP_BUNDLE_ID नामक एक नई प्रविष्टि बनाएं। मेरे पास 4 कॉन्फ़िगरेशन हैं, मैं प्रत्येक के लिए एक मान जोड़ता हूं (com.company.app.staging, com.company.app.development, आदि)। आप में मुख्य ऐप लक्ष्य की Info.plist, $ (PARENT_APP_BUNDLE_ID) पर बंडल पहचानकर्ता सेट करें। अपने एक्सटेंशन लक्ष्य की Info.plist में, इसे बंडल आइडेंटिफ़ायर $ (PARENT_APP_BUNDLE_ID) पर सेट करें .ameOfYourExtension। – djibouti33

+2

आह, इस तथ्य को पूरी तरह से याद किया कि आप इसे अतिरिक्त कस्टम बिल्ड कॉन्फ़िगरेशन (प्रोजेक्ट | इन्फो | कॉन्फ़िगरेशन) के माध्यम से कर रहे थे और परियोजना स्तर पर प्रत्येक कॉन्फ़िगरेशन के लिए PARENT_APP_BUNDLE_ID का एक अलग मान सेट कर रहे थे, इसके बजाय आपको व्यक्तिगत लक्ष्य सेटिंग्स को ओवरराइड करके किसी भी तरह से यह सोचने के बजाय । तो आप अभी भी डब्ल्यू/अलग बंडल आईडी बनाने के लिए योजनाएं स्विच करने में सक्षम हैं, क्योंकि प्रत्येक योजना बिल्ड कॉन्फ़िगरेशन के एक अलग सेट का उपयोग करती है। कूल, मेरे लिए काम करता है, और मुझे डुप्लिकेट लक्ष्य और प्लेस्ट फाइलों को साफ करने में मदद करता है! – qix

उत्तर

18

लक्ष्य की बिल्ड सेटिंग्स अन्य लक्ष्यों के लिए उपलब्ध नहीं हैं। हालांकि परियोजना की निर्माण सेटिंग्स उपलब्ध हैं।

आप इस प्रकार अपनी परियोजना में उपयोगकर्ता द्वारा परिभाषित बिल्ड सेटिंग जोड़ सकते हैं और इसे PARENT_APP_BUNDLE_IDENTIFIER कहते हैं और अपनी सभी योजनाओं के लिए सही बंडल आईडी सेट कर सकते हैं।

तब एप्लिकेशन एक्सटेंशन का लक्ष्य की जानकारी टैब में

$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier) 

के बंडल आईडी सेट यह मेरे लिए बिल्कुल ठीक काम किया।

+0

अद्भुत! यह मुझे इतनी निराशा बचाता है! – djibouti33

+0

मैं एक ही मुद्दा चला रहा हूं .. मैंने ओसोल्यूशन के ऊपर का पालन किया ... लेकिन आगे नहीं बढ़े .. मैंने आईओएस 8.0.2 और एक्सकोड 6.0.1 (ऑफिसिला वन) अपडेट किया है, मेरे पास 8.0 है कि यह मेरे लिए ठीक काम करता है .. – Sri

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