Xcode संस्करण (CFBundleShortVersionString) और बिल्ड (CFBundleVersion) के बीच अंतर


94

एप्लिकेशन लक्ष्य सारांश

Xcode 4 में, मैं इसे अपने लक्ष्य सारांश के लिए देखता हूं:

"संस्करण" इनपुट CFBundleShortVersionStringinfo.plist फ़ाइल से मेल खाती है , और "बिल्ड" इनपुट से मेल खाती है CFBundleVersion

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

मेरे दो सवाल हैं:

1) अगर मैं स्क्रैच से शुरू कर रहा था, तो आपके ऐप को वर्जन करने के लिए सबसे अच्छा अभ्यास क्या होगा?

2) मेरे ऐप के सभी पिछले रिलीज़ में, मैंने केवल उपयोग किया CFBundleVersion। अपग्रेड प्रक्रिया में गड़बड़ी न करने के लिए, क्या मुझे CFBundleVersionउसी तरह से वेतन वृद्धि जारी रखनी चाहिए जो संभव है या "सही तरीके" पर स्विच करना संभव है, क्या कोई मौजूद है?


3
यह stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4 का एक डुप्लिकेट है, लेकिन शायद यह संस्करण बेहतर कहा गया है (और इसका स्क्रीनशॉट है)।
डैनियल डिकिसन

क्या आपके सारांश में बिल्ड फ़ील्ड दिखाने के लिए आपको कुछ करना था? मुझे केवल एक संस्करण दिखाई देता है, लेकिन कोई बिल्ड फ़ील्ड नहीं है।
केनी वीलैंड

जवाबों:


68

Apple दस्तावेज़ "सूचना संपत्ति सूची कुंजी संदर्भ" कहता है कि CFBundleShortVersionStringरिलीज़ संस्करण का CFBundleVersionप्रतिनिधित्व करता है , जबकि किसी भी बिल्ड, रिलीज़ या नहीं का प्रतिनिधित्व करता है। इसके अलावा, CFBundleShortVersionStringस्थानीयकृत किया जा सकता है, हालांकि मुझे नहीं पता कि आप क्यों करना चाहते हैं, क्योंकि वे कहते हैं कि यह "तीन अवधि-अलग पूर्णांकों के शामिल स्ट्रिंग" माना जाता है। एक रिलीज बिल्ड के लिए, दो नंबरों को एक ही बनाना उचित होगा। एक विकास के निर्माण के लिए, आप कुछ और CFBundleVersion, शायद एक और डॉट और पूर्णांक से निपट सकते हैं।


लेकिन अगर मैं वर्तमान में 1.3.1 का उपयोग कर रहा हूं जैसा कि मेरा CFBundleVersionऔर मेरे जैसा कुछ भी नहीं है CFBundleShortVersionString, और मैं CFBundleVersionआंतरिक बिल्ड का प्रतिनिधित्व करने के लिए उपयोग करना चाहता हूं , तो मुझे कम से कम 1.3.1 से अधिक पूर्णांक के साथ शुरू करने की आवश्यकता है, है ना? या कि स्विच सिर्फ परेशानी के लिए पूछ रहा है?
फिलिप वाल्टन

संस्करण ( CFBundleShortVersionString) केवल एक चीज है जो Apple को सबमिट करने के लिए मायने रखेगा। बिल्ड ( CFBundleVersion) का उपयोग तब होता है जब आप विकास में पसंद करते हैं, या अपने ऐप के भीतर दिखाते हैं। यदि आपको पसंद है तो ऑक्टल (बेस -8) और रिवर्स में 12 से इट्रेट का उपयोग करें।
nekno

16
nekno: वास्तव में CFBundleVersion एप्पल के लिए क्या मायने रखता है। ऐप सबमिट करते समय Apple द्वारा दिए गए इस त्रुटि संदेश की जाँच करें: "आपके द्वारा अपलोड किया गया बाइनरी अमान्य था। Info.plist फ़ाइल में कुंजी CFBundleVersion में पहले से अपलोड किए गए संस्करण की तुलना में एक उच्च संस्करण होना चाहिए।"
मल्हल

10
कुछ देश पश्चिमी दुनिया में उपयोग किए जाने वाले अन्य अंकों का उपयोग करते हैं, जैसे पूर्वी अरबी (١, num, ٢, other, other, other, other, other, other, ٩) या हिब्रू में (א, ב,,,,, ה, ו, ח,), ט) - और उन दोनों को भी बाएं से दाएं लिखा जाता है। वहाँ कई और अधिक अंक प्रणाली वहाँ हैं ( en.wikipedia.org/wiki/Category:Numeral देखें ) इसलिए मेरा अनुमान है कि Apple का अर्थ "स्थानीयकरण" संस्करण संख्या है।
रुसलान उलानोव

वैसे, विराम चिह्न वाले तीन अंकों की आवश्यकता नहीं है। मैं एक तारीख के समय के मूल्य का उपयोग कर रहा हूं जैसे कि 201606070620शिपिंग आईओएस 7-8-9 ऐप में दोनों मूल्यों के लिए।
बेसिल बॉर्क

3

JWWalker के सवाल पर कि आप CFBundleShortVersionString का स्थानीयकरण क्यों करना चाहेंगे, यह दशमलव विभाजक होगा। उदाहरण के लिए, उन स्थानों पर जहां दशमलव विभाजक वास्तव में एक अल्पविराम है, "1.5" संस्करण "1,5" होगा।


30
IMO आपको संस्करण संख्याओं को स्थानीय बनाने की आवश्यकता नहीं है। मैं एक ऐसे क्षेत्र में रहता हूँ जहाँ दशमलव विभाजक एक अल्पविराम (जर्मनी) है, और मुझे एक डॉट द्वारा अलग किए गए संस्करण संख्याओं के लिए उपयोग किया जाता है। वास्तव में, मुझे याद नहीं है कि मैंने कभी अल्पविराम के साथ संस्करण संख्या देखी हो।
क्रिश्चियन स्पीच

2
मैं दशमलव विभाजक के रूप में अल्पविराम का उपयोग करते हुए भी एक क्षेत्र में रहता हूं, हालांकि 1,3,1 काफी विषम मूल्य है, 1.3.1 बहुत बेहतर लगता है।
लुसिएन

1
मुझे लगता है कि इसका मतलब है कि आपके पास विभिन्न क्षेत्रों के लिए ऐप के विभिन्न संस्करण हो सकते हैं। 1.2.1> en.lproj 1.2.2> fr.lproj हालाँकि पूरी फ़ाइल की प्रतिलिपि तब बनाई जाती है जब आप फ़ाइल को स्थानीय करते हैं, इसलिए दोनों संस्करण संख्याओं की प्रतिलिपि बनाई जाती है ताकि दोनों को 'स्थानीयकृत' किया जा सके
brian.clear

1

जल्दी ठीक:

बस CFBundleShortVersionStringplist फ़ाइल में जोड़ें और अपना संस्करण संपादित करें।

  1. अपने को प्रकट करो InfoPlist.strings
  2. इसे हाइलाइट करें और नीचे दिए गए कोड को (सोर्स कोड मोड में मानकर) पेस्ट करें

{"CFBundleShortVersionString" = "1.1" ;;

  1. जो भी आपका नया निर्माण है, उसे 1.1 बदलें।
  2. अधिक त्रुटि के साथ बनाएँ और सबमिट करें!

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


1

बायनेरिज़ अपलोड करने पर Apple दस्तावेज़ देखें।

वर्जनिंग वर्जन और बिल्ड्स: आईट्यून्स कनेक्ट अपने प्रीलेयरेज वर्जन नंबर को अर्क करता है और बाइनरी से नंबर बनाता है। प्रीरेलेज़ संस्करण संख्या Xcode संस्करण संख्या है, या Info.plist में "बंडल संस्करण स्ट्रिंग, लघु" कुंजी है। बिल्ड नंबर Xcode Build नंबर है, या Info.plist में "बंडल संस्करण" कुंजी है। प्रीलेरेज़ संस्करण संख्या और बिल्ड नंबर, प्रिलिज़ टैब पर दिखाए जाएंगे, जैसा कि व्यूइंग बिल्ड्स में वर्णित है।

एक ऐप के लिए एक बाइनरी अपलोड करना

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