Version Code Android डेवलपमेंट में एक सकारात्मक पूर्णांक है जो प्रत्येक नए एप्लिकेशन बिल्ड को विशिष्ट रूप से पहचानता है। Google Play और Android सिस्टम यह निर्धारित करने के लिए Version Code का उपयोग करते हैं कि अपडेट की आवश्यकता है या नहीं: यदि नए बिल्ड का कोड स्थापित संस्करण से अधिक है, तो अपडेट प्रक्रिया शुरू हो जाती है। Android Developer Documentation के अनुसार, Version Code उपयोगकर्ता को नहीं दिखाया जाता है और केवल आंतरिक संस्करण क्रमांकन के लिए कार्य करता है।
मुख्य बिंदु
Version Code Integer प्रकार का एक पूर्णांक है जो Android एप्लिकेशन के प्रत्येक बिल्ड को सौंपा जाता है। Version Name के विपरीत, Version Code उपयोगकर्ता को प्रदर्शित नहीं किया जाता है और इसका उपयोग केवल ऑपरेटिंग सिस्टम और Google Play द्वारा अपडेट स्थापित करते समय संस्करणों की तुलना करने के लिए किया जाता है।
Version Code 1 से 2100000000 की सीमा में एक सकारात्मक पूर्णांक होना चाहिए। प्रत्येक बाद के बिल्ड का Version Code पिछले से सख्ती से अधिक होना चाहिए। यदि डेवलपर ने Version Code 5 के साथ एक बिल्ड जारी किया, तो अगला प्रकाशन 6, 7 या 5 से अधिक कोई भी संख्या उपयोग कर सकता है, लेकिन 4 या फिर से 5 नहीं।
Google ने 2007 में Android SDK के लॉन्च के साथ Version Code और Version Name का विभाजन पेश किया। Version Code को स्वचालित संस्करण तुलना के लिए एक मशीन पहचानकर्ता के रूप में डिज़ाइन किया गया था, जबकि Version Name को मानव-पठनीय लेबल के रूप में। यह विभाजन डेवलपर को संस्करण को अपनी इच्छानुसार नाम देने की अनुमति देता है, जबकि संख्यात्मक कोड के माध्यम से सख्त अपडेट क्रम बनाए रखता है।
| पैरामीटर | Version Code | Version Name |
|---|---|---|
| डेटा प्रकार | Integer | String |
| उपयोगकर्ता को दृश्य | नहीं | हाँ |
| संस्करण तुलना | संख्यात्मक तुलना | उपयोग नहीं किया जाता |
| प्रारूप | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| सीमा | 1 — 2100000000 | कोई सीमा नहीं |
Version Code की तुलना तंत्र Android ऑपरेटिंग सिस्टम और Google Play स्टोर में निर्मित है। प्रत्येक प्रकाशन के साथ, Google Play जाँचता है कि नए बिल्ड का Version Code स्थापित संस्करण के कोड से अधिक है। यदि शर्त पूरी नहीं होती है, तो प्रकाशन त्रुटि के साथ अस्वीकार कर दिया जाता है।
जब कोई डिवाइस अपडेट की जाँच करने के लिए Google Play से संपर्क करता है, तो सर्वर स्थापित एप्लिकेशन के Version Code की तुलना स्टोर में उपलब्ध अधिकतम से करता है। यदि सर्वर पर कोड अधिक है, तो अपडेट का डाउनलोड और इंस्टॉलेशन शुरू हो जाता है। उपयोगकर्ता डेवलपर द्वारा निर्दिष्ट Version Name देखता है, लेकिन अपडेट का निर्णय Version Code के आधार पर लिया जाता है।
डेवलपर्स Version Code बढ़ाने के लिए विभिन्न रणनीतियाँ लागू करते हैं। सबसे सरल प्रत्येक बिल्ड के साथ 1 की वृद्धि है। CI/CD पाइपलाइनों के लिए, अक्सर timestamp या बिल्ड नंबर का उपयोग किया जाता है: 2026070301 (वर्ष-महीना-दिन-संख्या)। यह महत्वपूर्ण है कि कोड एकदिश रूप से बढ़े और विभिन्न बिल्ड और Google Play ट्रैक के बीच दोहराया न जाए।
Version Code और Version Name build.gradle में दो स्वतंत्र फ़ील्ड हैं जो अलग-अलग कार्य करते हैं। Version Code सिस्टम के लिए एक आंतरिक पहचानकर्ता है, Version Name उपयोगकर्ता के लिए एक मार्केटिंग लेबल है। ये एक दूसरे से स्वतंत्र रूप से बदल सकते हैं।
Version Name एक स्ट्रिंग है जो एप्लिकेशन सेटिंग्स, Google Play और अपडेट डायलॉग में प्रदर्शित होती है। डेवलपर कोई भी प्रारूप निर्दिष्ट कर सकता है: 1.0.0, 2.3.1-beta, 3.0-rc1। Version Name का उपयोग स्ट्रिंग संस्करणों की तुलना के लिए नहीं किया जाता है — Google Play हमेशा Version Code पर निर्भर करता है।
ऐसी स्थिति संभव है जहां Version Code बढ़ता है जबकि Version Name समान रहता है। उदाहरण के लिए, यदि डेवलपर कार्यक्षमता बदले बिना hotfix बिल्ड में एक गंभीर बग को ठीक करता है। Version Name 2.0.0 रहता है, जबकि Version Code 5 से 6 में बदल जाता है। Google Play ऐसे अपडेट को सही ढंग से संभालेगा।
// उदाहरण: version name नहीं बदलता, कोड बढ़ता है
android {
defaultConfig {
versionCode 6 // था 5 — नई सुविधाओं के बिना hotfix
versionName "2.0.0" // नहीं बदला
}
}
// रनटाइम में संस्करणों की जाँच
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Code: $code, Name: $name")
Version Code कॉन्फ़िगरेशन एप्लिकेशन मॉड्यूल के build.gradle फ़ाइल में किया जाता है। versionCode फ़ील्ड एक पूर्णांक स्वीकार करता है और defaultConfig ब्लॉक का हिस्सा है। विभिन्न flavour बिल्ड के लिए, उत्पाद कॉन्फ़िगरेशन में versionCode फ़ील्ड के माध्यम से कस्टम मान सेट किए जा सकते हैं।
// build.gradle.kts — Kotlin DSL
android {
defaultConfig {
applicationId "com.example.app"
versionCode 15
versionName "2.1.0"
}
flavorDimensions +"version"
productFlavors {
create("demo") {
versionCode 1015
}
create("full") {
versionCode 2015
}
}
}
Product flavors विभिन्न कॉन्फ़िगरेशन के लिए अलग-अलग Version Code का उपयोग करने की अनुमति देते हैं: डेमो संस्करण, टैबलेट के लिए अलग संस्करण। यदि प्रोजेक्ट में flavors का उपयोग किया जाता है, तो अंतिम Version Code आधार संख्या और flavour-विशिष्ट वृद्धि से बनता है। Google Play प्रत्येक संयोजन को स्वतंत्र रूप से ट्रैक करता है।
CI/CD पाइपलाइनों (GitHub Actions, GitLab CI, Jenkins) में, Version Code अक्सर बिल्ड नंबर या दिनांक के आधार पर स्वचालित रूप से उत्पन्न होता है। यह मैन्युअल अपडेट के दौरान मानवीय त्रुटि को समाप्त करता है। स्क्रिप्ट build.gradle से वर्तमान Version Code पढ़ती है, इसे बढ़ाती है, और बिल्ड शुरू करने से पहले इसे वापस लिखती है।
// Version Code की स्वचालित वृद्धि
import java.util.Properties
import java.io.FileInputStream
val versionProps = Properties()
versionProps.load(FileInputStream("version.properties"))
val versionCode = versionProps.getProperty("VERSION_CODE").toInt() + 1
versionProps.setProperty("VERSION_CODE", versionCode.toString())
android {
defaultConfig {
versionCode = versionCode
}
}
Google Play के पास एप्लिकेशन प्रकाशित और अपडेट करते समय Version Code के लिए सख्त नियम हैं। इन नियमों का उल्लंघन करने से बिल्ड अस्वीकार हो जाता है या अपडेट जारी करने में असमर्थता होती है। डेवलपर को जीवनचक्र के सभी चरणों में सीमाओं और कोड प्रबंधन रणनीतियों को समझने की आवश्यकता है।
Google Play उस APK या AAB को अपलोड करने की अनुमति नहीं देता जिसका Version Code वर्तमान में प्रकाशित से कम या बराबर है। यह नियम प्रत्येक ट्रैक (production, beta, alpha) पर स्वतंत्र रूप से लागू होता है। यदि production में Version Code 10 वाला बिल्ड अपलोड किया गया है और alpha में कोड 5 वाला बिल्ड है, तो alpha ट्रैक को 6, 7, 8 या 9 में अपडेट किया जा सकता है, लेकिन production 10 पर रहता है।
बिल्ड को alpha से beta और फिर production में प्रमोट करते समय, Version Code को प्रत्येक चरण में बढ़ना चाहिए। यदि alpha संस्करण में कोड 10 है, तो beta 11 और production 12 का उपयोग कर सकता है। आप production में कोड 10 वाला बिल्ड जारी नहीं कर सकते यदि alpha पहले से 10 का उपयोग कर रहा है, भले ही production ने इसे अभी तक नहीं देखा हो।
सबसे आम त्रुटि एक ही ट्रैक में अपलोड किए गए विभिन्न बिल्ड में Version Code का मिलान है। Google Play APK_VERSION_CODE_ALREADY_EXISTS त्रुटि देता है। एक अन्य त्रुटि अधिकतम मान 2100000000 से अधिक होना है, जिससे संकलन विफलता होती है। विरोध से बचने के लिए, अपने CI सिस्टम में बिल्ड नंबर या बिल्ड दिनांक से जुड़ी स्वचालित कोड जनरेशन का उपयोग करें।
डेवलपर्स अक्सर वैकल्पिक ट्रैक के लिए hotfix रिलीज़ बनाते समय Version Code न बढ़ाने की गलती भी करते हैं। यदि production में कोड 15 है और alpha ट्रैक 14 पर रह गया है, तो alpha को production में प्रमोट करते समय, Google Play बिल्ड को अस्वीकार कर देगा क्योंकि इसका कोड वर्तमान production कोड से कम है। सभी ट्रैक में एक साथ कोड की एकदिशता की निगरानी करें — इसके लिए एकल version.properties फ़ाइल का उपयोग करना सुविधाजनक है जिससे सभी ट्रैक वर्तमान मान पढ़ते हैं।
अक्सर पूछे जाने वाले प्रश्न
नहीं, Google Play उसी ट्रैक में वर्तमान में प्रकाशित से कम या बराबर Version Code वाला बिल्ड अपलोड करने की अनुमति नहीं देता। सिस्टम अपलोड पर कोड की जाँच करता है और यदि एकदिश वृद्धि नियम का उल्लंघन होता है तो त्रुटि लौटाता है। alpha और beta ट्रैक के लिए भी यही सिद्धांत स्वतंत्र रूप से लागू होता है।
पहले प्रकाशन के लिए, आप Version Code 1 निर्दिष्ट कर सकते हैं। Google Play एक सकारात्मक पूर्णांक के अलावा कोई न्यूनतम सीमा निर्धारित नहीं करता। 1 से शुरू करने और प्रत्येक बाद के बिल्ड के साथ 1 बढ़ाने की सिफारिश की जाती है। यदि आप timestamp प्रारूप का उपयोग करते हैं, तो पहला बिल्ड 20260701 हो सकता है।
Version Code एक आंतरिक मशीन पहचानकर्ता है जिसका उपयोग सिस्टम तुलना के लिए करता है। Version Name एक उपयोगकर्ता-उन्मुख लेबल है जो Google Play और डिवाइस पर प्रदर्शित होता है। उपयोगकर्ता Version Name (उदाहरण के लिए, 2.0.0) देखता है, जबकि Google Play यह निर्धारित करने के लिए Version Code का उपयोग करता है कि अपडेट आवश्यक है या नहीं।
Version Code का अधिकतम मान 2100000000 (Integer.MAX_VALUE) है। पार होने पर, कंपाइलर त्रुटि देगा क्योंकि फ़ील्ड int प्रकार का है। बड़ी संख्या में बिल्ड वाली परियोजनाओं (दैनिक रिलीज़ के साथ CI/CD) के लिए, timestamp प्रारूप का उपयोग करने या major संस्करण की शुरुआत में काउंटर रीसेट करने की सिफारिश की जाती है।
Version Code का सीधे A/B परीक्षण के लिए उपयोग नहीं किया जाता है, लेकिन यह अप्रत्यक्ष रूप से इसे प्रभावित करता है। Google Play किसी विशिष्ट बिल्ड के लिए उपयोगकर्ताओं के प्रतिशत के अनुसार चरणबद्ध रोलआउट (staged rollout) कॉन्फ़िगर करने की अनुमति देता है। Version Code बिल्ड की पहचान करता है, जबकि A/B परीक्षण Firebase Remote Config या समान सेवाओं के माध्यम से कॉन्फ़िगर किए जाते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें