एक से ज़्यादा APK समर्थन (original) (raw)

सीधे मुख्य कॉन्टेंट पर जाएं

अगर आपको अपना ऐप्लिकेशन Google Play पर पब्लिश करना है, तो आपको एक Android ऐप्लिकेशन बंडल बनाकर अपलोड करना होगा. ऐसा करने पर, Google Play हर उपयोगकर्ता के डिवाइस कॉन्फ़िगरेशन के लिए, ऑप्टिमाइज़ किए गए APK अपने-आप जनरेट और उपलब्ध कराता है. इससे, उपयोगकर्ताओं को आपके ऐप्लिकेशन को चलाने के लिए, सिर्फ़ ज़रूरी कोड और संसाधन डाउनलोड करने पड़ते हैं. एक से ज़्यादा APK पब्लिश करना तब फ़ायदेमंद होता है, जब आपके ऐप्लिकेशन को Google Play पर पब्लिश नहीं किया जा रहा हो. हालांकि, आपको हर APK को खुद बनाना, साइन करना, और मैनेज करना होगा.

Google Play पर एक से ज़्यादा APK इस्तेमाल करने की सुविधा है. इसकी मदद से, अपने ऐप्लिकेशन के लिए अलग-अलग APK पब्लिश किए जा सकते हैं. ये APK, अलग-अलग डिवाइस कॉन्फ़िगरेशन को टारगेट करते हैं. हर APK आपके ऐप्लिकेशन का पूरा और अलग वर्शन होता है. हालांकि, ये Google Play पर एक ही ऐप्लिकेशन लिस्टिंग शेयर करते हैं. साथ ही, इनका पैकेज नाम एक ही होना चाहिए और इन पर एक ही रिलीज़ पासकोड से हस्ताक्षर किया जाना चाहिए. यह सुविधा उन मामलों में काम की होती है जब आपका ऐप्लिकेशन, एक ही APK की मदद से सभी डिवाइसों पर काम नहीं कर पाता.

Android डिवाइस कई तरह से अलग-अलग हो सकते हैं. इसलिए, अपने ऐप्लिकेशन को ज़्यादा से ज़्यादा डिवाइसों के लिए उपलब्ध कराना ज़रूरी है. इससे आपके ऐप्लिकेशन की सफलता में मदद मिलेगी. Android ऐप्लिकेशन आम तौर पर, एक APK के साथ काम करने वाले ज़्यादातर डिवाइसों पर चलते हैं. इसके लिए, अलग-अलग कॉन्फ़िगरेशन के लिए वैकल्पिक संसाधन (उदाहरण के लिए, अलग-अलग स्क्रीन साइज़ के लिए अलग-अलग लेआउट) उपलब्ध कराए जाते हैं. साथ ही, Android सिस्टम रनटाइम के दौरान डिवाइस के लिए सही संसाधन चुनता है. हालांकि, कुछ मामलों में एक APK, सभी डिवाइस कॉन्फ़िगरेशन के साथ काम नहीं कर पाता. ऐसा इसलिए होता है, क्योंकि वैकल्पिक संसाधनों की वजह से APK फ़ाइल का साइज़ बहुत बड़ा हो जाता है या अन्य तकनीकी समस्याओं की वजह से एक APK, सभी डिवाइसों पर काम नहीं कर पाता.

Google Play पर एक ही ऐप्लिकेशन लिस्टिंग में कई APK पब्लिश किए जा सकते हैं. इससे, आपके ऐप्लिकेशन को ज़्यादा से ज़्यादा डिवाइसों के लिए पब्लिश करने में मदद मिलती है. इसके बाद, Google Play हर APK को सही डिवाइसों पर उपलब्ध कराता है. यह उपलब्ध कराने के लिए, वह हर APK की मेनिफ़ेस्ट फ़ाइल में बताए गए कॉन्फ़िगरेशन के हिसाब से काम करता है.

अपने ऐप्लिकेशन को एक से ज़्यादा APK के साथ पब्लिश करके, ये काम किए जा सकते हैं:

फ़िलहाल, Google Play पर एक ही ऐप्लिकेशन के तौर पर कई APK पब्लिश करने के लिए, डिवाइस की सिर्फ़ ये विशेषताएं इस्तेमाल की जा सकती हैं.

ध्यान दें: Google Play पर APKs को तैयार करने और पब्लिश करने के बारे में जानने के लिए, रिलीज़ तैयार करना और उन्हें रोल-आउट करना सहायता लेख पढ़ें.

एक से ज़्यादा APK कैसे काम करते हैं

Google Play पर एक से ज़्यादा APK इस्तेमाल करने का कॉन्सेप्ट यह है कि आपके ऐप्लिकेशन के लिए, Google Play में सिर्फ़ एक एंट्री होती है. हालांकि, अलग-अलग डिवाइसों पर एक अलग APK डाउनलोड हो सकता है. इसका मतलब है कि:

इस्तेमाल किए जा सकने वाले फ़िल्टर

यह तय करने के लिए कि कौनसे डिवाइसों को कौनसा APK मिलेगा, Google Play के फ़िल्टर का इस्तेमाल किया जाता है. ये फ़िल्टर, हर APK की मेनिफ़ेस्ट फ़ाइल में मौजूद एलिमेंट से तय किए जाते हैं. हालांकि, Google Play आपको एक से ज़्यादा APK पब्लिश करने की अनुमति सिर्फ़ तब देता है, जब हर APK में डिवाइस की इन विशेषताओं के किसी वैरिएशन के साथ काम करने के लिए फ़िल्टर का इस्तेमाल किया जाता है:

Google Play फ़िल्टर को चालू करने वाले अन्य मेनिफ़ेस्ट एलिमेंट, अब भी हर APK पर पहले की तरह लागू होते हैं. हालांकि, इन एलिमेंट को ऊपर नहीं बताया गया है. हालांकि, Google Play आपको डिवाइस की उन विशेषताओं के आधार पर अलग-अलग APK पब्लिश करने की अनुमति नहीं देता. इसलिए, अगर ऊपर दिए गए फ़िल्टर हर APK के लिए एक जैसे हैं, तो एक से ज़्यादा APK पब्लिश नहीं किए जा सकते. हालांकि, APK, मेनिफ़ेस्ट या APK में मौजूद अन्य विशेषताओं के आधार पर अलग-अलग होते हैं. उदाहरण के लिए, आपके पास सिर्फ़ की विशेषताओं के आधार पर अलग-अलग APK उपलब्ध कराने का विकल्प नहीं है.

एक से ज़्यादा APK के लिए नियम

अपने ऐप्लिकेशन के लिए एक से ज़्यादा APK पब्लिश करने से पहले, आपको ये नियम समझने होंगे:

ऊपर दिए गए नियमों का पालन न करने पर, APKs चालू करने पर Google Play Console पर गड़बड़ी का मैसेज दिखता है. इस गड़बड़ी को ठीक करने के बाद ही, ऐप्लिकेशन पब्लिश किया जा सकता है.

APKs चालू करने पर, अन्य तरह के विरोध भी हो सकते हैं. हालांकि, इनकी वजह से गड़बड़ियां नहीं, बल्कि चेतावनियां मिलेंगी. चेतावनियां इन वजहों से मिल सकती हैं:

जब इस तरह के विरोध होते हैं, तो आपको चेतावनी वाला मैसेज दिखेगा. हालांकि, आपके पास अब भी अपना ऐप्लिकेशन पब्लिश करने का विकल्प होगा.

एक से ज़्यादा APK बनाना

एक से ज़्यादा APK पब्लिश करने का फ़ैसला लेने के बाद, आपको हर उस APK के लिए अलग-अलग Android प्रोजेक्ट बनाने पड़ सकते हैं जिसे पब्लिश करना है. इससे, उन्हें अलग-अलग तरीके से सही तरीके से डेवलप किया जा सकता है. इसके लिए, अपने मौजूदा प्रोजेक्ट का डुप्लीकेट बनाएं और उसे नया नाम दें. (इसके अलावा, बिल्ड कॉन्फ़िगरेशन के आधार पर, अलग-अलग संसाधनों (जैसे, टेक्सचर) को आउटपुट करने वाले बिल्ड सिस्टम का इस्तेमाल किया जा सकता है.)

सलाह: लाइब्रेरी प्रोजेक्ट का इस्तेमाल करके, अपने ऐप्लिकेशन कोड के बड़े हिस्सों को डुप्लीकेट होने से बचाया जा सकता है. लाइब्रेरी प्रोजेक्ट में शेयर किया गया कोड और संसाधन होते हैं. इन्हें अपने असली ऐप्लिकेशन प्रोजेक्ट में शामिल किया जा सकता है.

एक ही ऐप्लिकेशन के लिए कई प्रोजेक्ट बनाते समय, हर प्रोजेक्ट को ऐसे नाम से पहचानना एक अच्छा तरीका है जो APK पर डिवाइस से जुड़ी पाबंदियों के बारे में बताता हो. इससे, उन्हें आसानी से पहचाना जा सकता है. उदाहरण के लिए, एपीआई लेवल 21 और उसके बाद के वर्शन के लिए डिज़ाइन किए गए ऐप्लिकेशन के लिए, "HelloWorld_21" एक अच्छा नाम हो सकता है.

ध्यान दें: एक ही ऐप्लिकेशन के लिए पब्लिश किए गए सभी APKs का पैकेज नाम एक ही होना चाहिए और उन पर एक ही सर्टिफ़िकेट कुंजी से हस्ताक्षर किए जाने चाहिए. पक्का करें कि आपको एक से ज़्यादा APK के लिए बने सभी नियम भी समझ आ गए हों.

वर्शन कोड असाइन करना

एक ही ऐप्लिकेशन के हर APK का वर्शन कोड यूनीक होना चाहिए. इसकी जानकारी android:versionCode एट्रिब्यूट से मिलती है. एक से ज़्यादा APK पब्लिश करते समय, आपको वर्शन कोड असाइन करने में सावधानी बरतनी चाहिए. ऐसा इसलिए, क्योंकि हर APK का वर्शन कोड अलग-अलग होना चाहिए. हालांकि, कुछ मामलों में, हर APK के साथ काम करने वाले कॉन्फ़िगरेशन के आधार पर, वर्शन कोड को किसी खास क्रम में तय करना ज़रूरी होता है.

वर्शन कोड ऑर्डर करना

ज़्यादा एपीआई लेवल की ज़रूरत वाले APK का वर्शन कोड, आम तौर पर ज़्यादा होना चाहिए. उदाहरण के लिए, अगर आपने अलग-अलग एपीआई लेवल के साथ काम करने के लिए दो APK बनाए हैं, तो एपीआई लेवल के हिसाब से, APK का वर्शन कोड भी अलग-अलग होना चाहिए. इससे यह पक्का होता है कि अगर किसी डिवाइस को सिस्टम अपडेट मिलता है, तो वह ज़्यादा एपीआई लेवल के लिए APK इंस्टॉल कर सके. साथ ही, उपयोगकर्ता को ऐप्लिकेशन अपडेट करने की सूचना मिलती है. इस ज़रूरी शर्त के लागू होने के बारे में ज़्यादा जानने के लिए, ऊपर दिए गए एक से ज़्यादा APK के लिए नियम सेक्शन देखें.

आपको यह भी ध्यान रखना चाहिए कि वर्शन कोड के क्रम से, आपके उपयोगकर्ताओं को कौनसा APK मिलेगा. ऐसा, अलग-अलग APK के कवरेज के ओवरलैप होने या आने वाले समय में APK में किए जाने वाले बदलावों की वजह से हो सकता है.

उदाहरण के लिए, अगर आपके पास स्क्रीन साइज़ के हिसाब से अलग-अलग APK हैं, जैसे कि एक छोटी - सामान्य और एक बड़ी - बड़ी स्क्रीन के लिए, लेकिन आपको आने वाले समय में APK को छोटी और एक सामान्य - बड़ी स्क्रीन के लिए बदलना है, तो आपको बड़ी - बड़ी स्क्रीन के लिए APK का वर्शन कोड ज़्यादा रखना चाहिए. इस तरह, बदलाव करने पर सामान्य साइज़ के डिवाइस को सही अपडेट मिलेगा, क्योंकि मौजूदा APK से नए APK में वर्शन कोड बढ़ जाता है. यह नया APK, अब डिवाइस पर काम करता है.

साथ ही, अलग-अलग OpenGL टेक्स्चर के कम्प्रेशन फ़ॉर्मैट के हिसाब से अलग-अलग APK बनाते समय, ध्यान रखें कि कई डिवाइसों पर कई फ़ॉर्मैट काम करते हैं. जब दो APK के बीच कवरेज ओवरलैप होता है, तो डिवाइस को सबसे ज़्यादा वर्शन कोड वाला APK मिलता है. इसलिए, आपको अपने APK के वर्शन कोड को क्रम से लगाना चाहिए, ताकि पसंदीदा कंप्रेसन फ़ॉर्मैट वाले APK का वर्शन कोड सबसे ज़्यादा हो. उदाहरण के लिए, हो सकता है कि आप अपने ऐप्लिकेशन के लिए, PVRTC, ATITC, और ETC1 कंप्रेसन फ़ॉर्मैट का इस्तेमाल करके अलग-अलग बिल्ड करना चाहें. अगर आपको इन फ़ॉर्मैट को इसी क्रम में इस्तेमाल करना है, तो PVRTC का इस्तेमाल करने वाले APK का वर्शन कोड सबसे ज़्यादा होना चाहिए. ATITC का इस्तेमाल करने वाले APK का वर्शन कोड कम होना चाहिए. साथ ही, ETC1 का इस्तेमाल करने वाले वर्शन का वर्शन कोड सबसे कम होना चाहिए. इसलिए, अगर कोई डिवाइस PVRTC और ETC1, दोनों के साथ काम करता है, तो उसे PVRTC वाला APK मिलता है, क्योंकि इसमें सबसे ज़्यादा वर्शन कोड होता है.

अगर Google Play Store, टारगेट किए गए डिवाइस के लिए इंस्टॉल करने के लिए सही APK की पहचान नहीं कर पा रहा है, तो आपके पास यूनिवर्सल APK बनाने का विकल्प भी है. इसमें उन सभी डिवाइस वैरिएशन के लिए संसाधन शामिल होते हैं जिन पर आपको ऐप्लिकेशन उपलब्ध कराना है. अगर आपने यूनिवर्सल APK उपलब्ध कराया है, तो आपको उसे सबसे कमversionCode असाइन करना चाहिए. Google Play Store, आपके ऐप्लिकेशन का वह वर्शन इंस्टॉल करता है जो टारगेट डिवाइस के साथ काम करता है और जिसका versionCode सबसे ज़्यादा होता है. इसलिए, यूनिवर्सल APK के लिए कम versionCode असाइन करने से यह पक्का होता है कि Google Play Store, बड़े यूनिवर्सल APK पर वापस जाने से पहले, आपके किसी अन्य APK को इंस्टॉल करने की कोशिश करे.

वर्शन कोड स्कीम का इस्तेमाल करना

अलग-अलग APK को अपने वर्शन कोड को दूसरों से अलग अपडेट करने की अनुमति देने के लिए, आपको अपने वर्शन कोड के लिए ऐसी योजना का इस्तेमाल करना चाहिए जो हर APK के बीच ज़रूरत के मुताबिक जगह उपलब्ध कराती हो. उदाहरण के लिए, जब किसी एक APK में गड़बड़ी को ठीक किया जाता है, तो सभी APK को अपडेट करने की ज़रूरत नहीं होती. आपको कोड में अपने वर्शन का असली नाम भी शामिल करना चाहिए. इसका मतलब है कि android:versionName को असाइन किया गया, उपयोगकर्ता को दिखने वाला वर्शन. इससे, वर्शन कोड और वर्शन के नाम को आसानी से जोड़ा जा सकता है.

ध्यान दें: किसी APK के वर्शन कोड को बढ़ाने पर, Google Play, पिछले वर्शन का इस्तेमाल करने वाले लोगों को ऐप्लिकेशन अपडेट करने के लिए कहेगा. इसलिए, ग़ैर-ज़रूरी अपडेट से बचने के लिए, आपको उन APK के वर्शन कोड को नहीं बढ़ाना चाहिए जिनमें कोई बदलाव नहीं किया गया है.

हमारा सुझाव है कि आप वर्शन कोड में कम से कम सात अंक इस्तेमाल करें: वर्शन कोड के ऊपरी बिट में, काम करने वाले कॉन्फ़िगरेशन दिखाने वाले पूर्णांक होते हैं. साथ ही, वर्शन का नाम (android:versionName से) निचले बिट में होता है. उदाहरण के लिए, अगर ऐप्लिकेशन के वर्शन का नाम 3.1.0 है, तो एपीआई लेवल 4 वाले APK और एपीआई लेवल 11 वाले APK के वर्शन कोड, क्रमशः 0400310 और 1100310 जैसे होंगे. पहले दो अंक, एपीआई लेवल (क्रमशः 4 और 11) के लिए रिज़र्व हैं. बीच के दो अंक, स्क्रीन साइज़ या GL टेक्सचर फ़ॉर्मैट (इन उदाहरणों में इस्तेमाल नहीं किए गए) के लिए हैं. आखिरी तीन अंक, ऐप्लिकेशन के वर्शन के नाम (3.1.0) के लिए हैं. पहले चित्र में दो उदाहरण दिए गए हैं. ये उदाहरण, प्लैटफ़ॉर्म के वर्शन (एपीआई लेवल) और स्क्रीन साइज़, दोनों के आधार पर अलग-अलग होते हैं.

पहली इमेज. आपके वर्शन कोड के लिए सुझाई गई स्कीम. इसमें एपीआई लेवल के लिए पहले दो अंकों, कम से कम और ज़्यादा से ज़्यादा स्क्रीन साइज़ (1 से 4, चारों साइज़ को दिखाने के लिए) के लिए दूसरे और तीसरे अंकों या टेक्सचर फ़ॉर्मैट को दिखाने के लिए, और ऐप्लिकेशन वर्शन के लिए आखिरी तीन अंकों का इस्तेमाल किया जाता है.

वर्शन कोड के लिए यह स्कीम सिर्फ़ एक सुझाव है. इससे आपको यह तय करने में मदद मिलेगी कि ऐप्लिकेशन के अपडेट होने के साथ-साथ, पैटर्न को कैसे स्केल किया जा सकता है. खास तौर पर, इस स्कीम में अलग-अलग टेक्स्चर कंप्रेसन फ़ॉर्मैट की पहचान करने का तरीका नहीं बताया गया है. एक विकल्प यह हो सकता है कि आप अपनी टेबल तय करें, जिसमें आपके ऐप्लिकेशन के साथ काम करने वाले हर अलग-अलग कंप्रेसन फ़ॉर्मैट के लिए एक अलग पूर्णांक तय किया गया हो. उदाहरण के लिए, 1, ETC1 से जुड़ा हो सकता है और 2, ATITC से जुड़ा हो सकता है.

आपके पास अपनी पसंद के मुताबिक किसी भी स्कीम का इस्तेमाल करने का विकल्प है. हालांकि, आपको इस बात पर ध्यान देना चाहिए कि आने वाले समय में आपके ऐप्लिकेशन के वर्शन को उनके वर्शन कोड कैसे बढ़ाने होंगे. साथ ही, यह भी ध्यान रखना चाहिए कि डिवाइस कॉन्फ़िगरेशन में बदलाव होने पर (उदाहरण के लिए, सिस्टम अपडेट की वजह से) या एक या उससे ज़्यादा APK के लिए कॉन्फ़िगरेशन के लिए सहायता में बदलाव करने पर, डिवाइसों को अपडेट कैसे मिल सकते हैं.

इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.

आखिरी बार 2025-07-27 (UTC) को अपडेट किया गया.