आईट्यून्स कनेक्ट में "संस्करण संख्या", "बंडल संस्करण", "बंडल संस्करण स्ट्रिंग" के बीच अंतर क्या है?


94

अपडेट संस्करण को कैसे सबमिट किया जाए, इस पर Apple का डॉक अधिक स्पष्ट हो सकता है।

जैसा कि शीर्षक में पूछा गया है, क्या अंतर है

  1. itunes कनेक्ट में संस्करण संख्या (जिसे आपको अपडेट सबमिट करने पर आपूर्ति करनी होगी)
  2. बंडल संस्करण xcode में
  3. बंडल संस्करण स्ट्रिंग, लघु

क्या वे किसी भी तरह से संबंधित हैं?


12
एप्पल और उनके भ्रामक संदर्भ / क्षेत्रों ...: /
BoltClock

कृपया मेरा पिछला उत्तर देखें: stackoverflow.com/a/31921249/936957
यूनुस नेदिम मेहेल

जवाबों:


143

हाँ, वे संबंधित हैं। वे सभी आपके एप्लिकेशन के संस्करण को संदर्भित करते हैं।

  • आईट्यून्स कनेक्ट
    यह ऐप स्टोर में दिखाया गया संस्करण संख्या है; यह एक शुद्ध संस्करण की तरह होना चाहिए1.2.3

  • बंडल संस्करण (CFBundleVersion)
    यह एक शुद्ध संस्करण संख्या होने की आवश्यकता नहीं है। कुछ इस तरह हो सकता है 12345या 1.2.3 (Build 12345AB)। यह उदाहरण के लिए Mac OS X ऐप्स के बारे में विंडो में दिखाया गया है और अक्सर "वर्जन नंबर" की तुलना में "बिल्ड नंबर" अधिक होता है।

  • बंडल संस्करण स्ट्रिंग (CFBundleShortVersionString) यह मान "वास्तविक" संस्करण संख्या के रूप में उपयोग किया जाता है। यह एक ही स्ट्रिंग होना चाहिए जैसा कि आईट्यून्स कनेक्ट में संस्करण के लिए उपयोग किया जाता है ।

अपडेट:
जैसा कि @snlehton द्वारा बताया गया है, CFBundleVersion को एक शुद्ध संस्करण संख्या होना चाहिए जैसे 1.2.3कि आप अपने एप्लिकेशन को iOS (iOS) ऐप स्टोर पर अपलोड करना चाहते हैं।


3
के लिए परीक्षण कर आप की तरह अंतिम संस्करण संख्या के बंडल संस्करण स्ट्रिंग सेट 1.2.3और उसके बाद प्रत्येक निर्माण के लिए बंडल संस्करण को बढ़ा देते।
फैबियन क्रेजर सेपर

19
यह गलत है क्योंकि CFBundleVersion xyz के लिए होना चाहिए, अन्यथा एक बिल्ड अपलोड करना विफल हो जाएगा! लिंक
स्नेलटन

2
मैंने हाल ही में "1.0.2 RC3" के साथ CFBundleVersion के साथ एक बिल्ड प्रस्तुत किया और यह त्रुटि संदेश के साथ बाउंस हुआ: "बंडल अमान्य है। Info.plist फ़ाइल में कुंजी CFBundleVersion गैर-नकारात्मक पूर्णांकों की अवधि-अलग-अलग सूची होनी चाहिए।" मुझे लगता है कि nn.n.nxnnn उपयोग करने के लिए सही प्रारूप है, लेकिन अभी तक इसे आज़माया नहीं है।
स्नैलटन

3
1235 का CFBundleVersion यहां, कोई समस्या नहीं है
Piotr Tomasik

4
यहाँ भ्रम इसलिए है क्योंकि CFBundleShortVersionString वैकल्पिक है और जब इसे सेट किया जाता है तो यह बदल जाता है कि CFBundleVersion किस लिए उपयोग किया जाता है। यदि केवल CFBundleVersion सहित, तो यह सार्वजनिक संस्करण संख्या होना चाहिए, उदाहरण 1.0। हालाँकि, अगर CFBundleVersion और CFBundleShortVersionString दोनों सेट हैं, तो CFBundleShortVersionString को अब मुझे सार्वजनिक संस्करण संख्या, जैसे 1.0। और अब CFBundleVersion बिल्ड नंबर बनने के लिए बदलता है, जो कि आमतौर पर 374629 जैसे एकल पूर्णांक है। उम्मीद है कि यह इसे साफ करता है।
मलयाल

27

हां वे संबंधित हैं लेकिन उनकी परिभाषा इस बात पर निर्भर करती है कि उनका उपयोग कैसे किया जाता है।

  • आईट्यून्स कनेक्ट संस्करण

    हमेशा एक संस्करण संख्या होनी चाहिए, उदाहरण के लिए 1.0

उपयोग मोड 1 - केवल CFBundleVersion सेट है

  • बंडल संस्करण (CFBundleVersion)

    एक संस्करण संख्या होनी चाहिए, उदाहरण के लिए 1.0। आईट्यून्स कनेक्ट संस्करण से मेल खाना चाहिए।

उपयोग मोड 2 - दोनों CFBundleVersion और CFBundleShortVersionString सेट हैं

  • बंडल संस्करण (CFBundleVersion)

    एक बिल्ड नंबर होना चाहिए, उदाहरण के लिए एक एकल पूर्णांक जैसे 435163।

  • बंडल लघु संस्करण स्ट्रिंग (CFBundleShortVersionString)

    एक संस्करण संख्या होनी चाहिए, उदाहरण के लिए 1.0। आईट्यून्स कनेक्ट संस्करण से मेल खाना चाहिए।

उपयोग मोड 2 जाने का सबसे अच्छा तरीका है। ऐप के अपग्रेड पथ के लिए कुछ उदाहरण संख्याएं यहां दी गई हैं:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

संस्करण संख्याओं पर एक अतिरिक्त ध्यान दें: यदि आप अपने ऐप में एक मामूली अपडेट (जैसे बग फिक्स) जमा करते हैं, तो आपको संस्करण संख्या में कभी भी याद नहीं करना चाहिए, जैसे हमेशा 1.0.1 और कभी 1.01 का उपयोग करें या आप का उपयोग नहीं करने का जोखिम होगा भविष्य में कुछ संस्करण संख्याएं क्योंकि उन्हें बढ़ाना संभव नहीं होगा।


2
यह तालिका अकेले यह समझाने का सबसे अच्छा काम करती है कि ये दोनों संख्याएँ किस तरह से संबंधित हैं और अभ्यास में उपयोग की जाती हैं। धन्यवाद।
जोशुआ पिंटर

आईट्यून्स कनेक्ट संस्करण से मेल खाना चाहिए। यह एक कठिन आवश्यकता नहीं है (भले ही यह एक MUST होना चाहिए)
मार्को पैप्पालार्डो

13

हां, वे सभी संबंधित हैं।

संस्करण संख्या itunesconnect में संस्करण संख्या आपूर्ति की जरूरत है। उदाहरण के लिए, 2.1.1 या 3.1.2 आदि। यह भी CFBundleShortVersionString के बराबर होना चाहिए ।

बंडल संस्करण Xcode ( CFBundleVersion ) में केवल बिल्ड संख्या का प्रतिनिधित्व करता है जो अनुप्रयोग के एक पुनरावृत्ति (जारी या अप्रतिबंधित) की पहचान करता है।

बंडल संस्करण स्ट्रिंग, शॉर्ट ( CFBundleShortVersionString ) डॉट्स द्वारा अलग किए गए तीन पूर्णांकों से मिलकर एक संख्या है। पहला अनुप्रयोग के किसी भी प्रमुख अद्यतन का प्रतिनिधित्व करता है, जैसे कि नई सुविधाएँ या बड़े परिवर्तन लागू करने वाले अद्यतन। दूसरा पूर्णांक उन संशोधनों को दर्शाता है जो कम प्रमुख विशेषताओं को लागू करती हैं। तीसरा पूर्णांक रखरखाव रिलीज का प्रतिनिधित्व करता है।


3
दरअसल, "बंडल वर्जन स्ट्रिंग, शॉर्ट" को डॉट्स द्वारा अलग किए गए तीन नंबर होने की जरूरत नहीं है। मुझे लगता है कि "1" और "1.1" भी मान्य हैं।
निकोलस मिआरी

वास्तव में itunesconnect में मेरे परीक्षण संस्करण संख्या से पूरी तरह से CFBundleVersion और ShortVersion से अनिश्चित है। तो आप उन्हें अलग भी कर सकते हैं
मार्को पैपलार्डो

11

CFBundleVersion के बारे में सावधान रहें । यह केवल प्रोडक्शन बिल्ड नंबर नहीं है। यह मान Apple द्वारा बाइनरी अपलोड प्रक्रिया के दौरान जांचा जाता है, और यह इसे विफल कर सकता है।

सुनिश्चित करें कि आप सेट CFBundleVersion के मूल्य के साथ CFBundleShortVersionString जब आप प्रस्तुत करने के लिए अपने रिहाई का निर्माण।

इसके बारे में इस पोस्ट को देखें


3
यह सही जानकारी है, स्वीकृत उत्तर वास्तव में गलत है।
स्नैलटन

9
यह सही नहीं है, CFBundleVersionमैच नहीं करना है CFBundleShortVersionString। उदाहरण के लिए, यदि आप क्रोम (ऐप स्टोर में अभी) के लिए .ipa फ़ाइल को देखते हैं तो उनके लिए "34.0.1847.18" CFBundleVersionऔर "34.1847.18" है CFBundleShortVersionString
प्रोगराम

6
यह कहते हुए कोई दस्तावेज नहीं है कि CFBundleVersion और CFBundleShortVersionString एक ही होना चाहिए।
टॉयडोर

8

स्वीकृत उत्तर जाने का तरीका है - इसे केवल एक उदाहरण के रूप में जोड़ना।

हमारी अंतिम रिलीज़ के लिए, "बंडल संस्करण स्ट्रिंग, लघु" की आवश्यकता थी, और मैंने आगे बढ़कर बंडल संस्करण संख्या (हमारे ऐप के लिए 1.2.8) के साथ इसका मिलान किया।

मैंने तब Testflight को सक्षम किया, और हमारे आंतरिक परीक्षकों के लिए लंबित Apple समीक्षा (1.2.8) संस्करण उपलब्ध कराया। एक परीक्षक को हालांकि एक समस्या मिली जिसे ठीक करने की आवश्यकता थी, और हमने जगह में बाइनरी को हटा दिया। एक नया बिल्ड अपलोड करते समय, हमें एक त्रुटि मिली, जो यह बताती है कि बिल्ड वर्जन पहले ही अपलोड किया जा चुका है।

कुछ SO लिंक और Apple डॉक्स पढ़ने के बाद, मेरी समझ बंडल वर्जन बनाने की थी: 1.2.8.001, जबकि बंडल-वर्जन-मेन शॉर्ट-वे जिस तरह से था। यदि एक नई बिल्ड की आवश्यकता है, तो हम बंडल-वर्जन को 1.2.8.002 तक बढ़ाते हैं।

नोट: अपलोड स्वीकार कर लिया गया था, और बिल्ड पूर्व रिलीज के तहत "1.2.8.001" के रूप में दिखाई देता है। संस्करण संख्या 1.2.8 बनी हुई है।


3

इस लिंक के स्वीकृत उत्तर में अच्छा विवरण शामिल है :: कौन सा iOS ऐप वर्जन / बिल्ड नंबर (आवश्यक) ऐप स्टोर पर जारी किया जाना चाहिए?

सेब डॉक्स से

CFBundleVersion (बंडल संस्करण)

CFBundleVersion (स्ट्रिंग - आईओएस, ओएस एक्स) बंडल के बिल्ड संस्करण संख्या को निर्दिष्ट करता है, जो बंडल के एक पुनरावृत्ति (जारी या अप्रबंधित) की पहचान करता है। बिल्ड संस्करण संख्या में एक स्ट्रिंग होनी चाहिए जिसमें तीन गैर-ऋणात्मक, अवधि-पूर्ण पूर्णांक पूर्णांक पूर्णांक शून्य से अधिक हो। स्ट्रिंग में केवल संख्यात्मक (0-9) और अवधि (।) अक्षर होने चाहिए। अग्रणी शून्य को प्रत्येक पूर्णांक से काट दिया जाता है और इसे अनदेखा किया जाएगा (अर्थात 1.02.3 1.2.3 के बराबर है)। यह कुंजी स्थानीय नहीं है।

CFBundleShortVersionString (बंडल संस्करण स्ट्रिंग, लघु)

CFBundleShortVersionString (स्ट्रिंग - iOS, OS X) बंडल की रिलीज़ संस्करण संख्या को निर्दिष्ट करता है, जो ऐप के रिलीज़ किए गए पुनरावृत्ति की पहचान करता है। रिलीज़ संस्करण संख्या एक स्ट्रिंग है जिसमें तीन अवधि-पृथक पूर्णांक शामिल हैं। पहला पूर्णांक ऐप में प्रमुख संशोधनों का प्रतिनिधित्व करता है, जैसे कि संशोधन जो नई सुविधाओं या प्रमुख परिवर्तनों को लागू करते हैं। दूसरा पूर्णांक उन संशोधनों को दर्शाता है जो कम प्रमुख विशेषताओं को लागू करती हैं। तीसरा पूर्णांक रखरखाव रिलीज का प्रतिनिधित्व करता है।

इस कुंजी का मान CFBundleVersion के मान से भिन्न होता है, जो ऐप के एक पुनरावृत्ति (जारी या अप्रकाशित) की पहचान करता है। इस कुंजी को आपकी InfoPlist.strings फ़ाइलों में शामिल करके स्थानीयकृत किया जा सकता है।

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