अगस्त 2021 में, Google ने एक निर्णय लिया जिसने Android ऐप्स वितरित करने के तरीके को मौलिक रूप से बदल दिया: Google Play Store पर सबमिट किए गए सभी नए ऐप्स को पारंपरिक APK के बजाय Android ऐप बंडल (AAB) प्रारूप का उपयोग करना होगा। इस बदलाव ने डेवलपर्स, उपयोगकर्ताओं और तृतीय-पक्ष ऐप वितरण के संपूर्ण पारिस्थितिकी तंत्र को प्रभावित किया। लेकिन वास्तव में ऐप बंडल क्या है, यह कैसे काम करता है और आपको इसकी परवाह क्यों करनी चाहिए?
यह मार्गदर्शिका AAB प्रारूप के तकनीकी आंतरिक से लेकर उन उपयोगकर्ताओं के लिए व्यावहारिक निहितार्थों तक सब कुछ कवर करती है जो दोस्तों के साथ ऐप्स साझा करना चाहते हैं या उन्हें प्ले स्टोर एक्सेस के बिना डिवाइस पर इंस्टॉल करना चाहते हैं।
Android ऐप बंडल क्या है?
Android ऐप बंडल एक प्रकाशन प्रारूप है जिसमें ऐप के सभी संकलित कोड और संसाधन शामिल होते हैं लेकिन अंतिम इंस्टॉल करने योग्य APK की पीढ़ी को Google Play पर रोक दिया जाता है। इसे एक मास्टर टेम्पलेट के रूप में सोचें जिससे Google के सर्वर तुरंत अनुकूलित, डिवाइस-विशिष्ट पैकेज बनाते हैं।
APK के विपरीत, जो एक रेडी-टू-इंस्टॉल पैकेज है, AAB फ़ाइल को सीधे किसी डिवाइस पर इंस्टॉल नहीं किया जा सकता है। यह एक बिल्ड आर्टिफैक्ट है जो प्ले स्टोर पर अपलोड हो जाता है, जहां Google का बुनियादी ढांचा इसे संसाधित करता है और प्रत्येक डिवाइस कॉन्फ़िगरेशन के लिए अनुरूपित APK उत्पन्न करता है।
फ़ाइल एक्सटेंशन .aab है, और आंतरिक रूप से यह ज़िप जैसी संरचना के साथ संयुक्त प्रोटोकॉल बफर प्रारूप का उपयोग करता है। इसमें ऐप का DEX बाइटकोड, संसाधन, संपत्ति, मूल लाइब्रेरी और एक विशेष बंडल मेटाडेटा फ़ाइल शामिल है जो Google Play को सामग्री को विभाजित करने का तरीका बताती है।
Google ने ऐप बंडल क्यों अनिवार्य किया?
ऐप बंडल के पीछे प्राथमिक प्रेरणा ऐप डाउनलोड आकार कम करना है। एक सामान्य Android ऐप को कई स्क्रीन घनत्व (mdpi, hdpi, xhdpi, xxhdpi, xxhdpi), कई सीपीयू आर्किटेक्चर (armeabi-v7a, arm64-v8a, एक्स86, x86_64) और कई भाषाओं का समर्थन करने की आवश्यकता होती है। पारंपरिक APK मॉडल में, इन सभी संसाधनों को एक ही फ़ाइल में बंडल किया जाता है, भले ही किसी भी डिवाइस को केवल उनके एक अंश की आवश्यकता होती है।
एक गेम पर विचार करें जिसमें चार सीपीयू आर्किटेक्चर के लिए देशी लाइब्रेरी और पांच स्क्रीन घनत्व के लिए बनावट शामिल हैं। यूनिवर्सल APK 200 एमबी हो सकता है, लेकिन केवल प्रासंगिक आर्किटेक्चर और घनत्व वाला डिवाइस-विशिष्ट संस्करण 80 एमबी हो सकता है। यह डाउनलोड आकार में 60% की कमी है।
Google की रिपोर्ट है कि ऐप बंडलों का उपयोग करने वाले ऐप्स अपने सार्वभौमिक APK समकक्षों की तुलना में औसतन 15% छोटे हैं। बड़े ऐप्स और गेम के लिए, बचत बहुत अधिक नाटकीय हो सकती है। छोटे डाउनलोड का मतलब है तेज़ इंस्टॉल, कम बैंडविड्थ खपत और आकार की चिंताओं के कारण कम छोड़े गए इंस्टॉलेशन।
ऐप बंडल आंतरिक रूप से कैसे काम करते हैं
बंडल संरचना
एक AAB फ़ाइल को मॉड्यूल में व्यवस्थित किया जाता है, प्रत्येक मॉड्यूल में उसका अपना कोड, संसाधन और संपत्तियां होती हैं। सबसे आम संरचना में शामिल हैं:
- बेस मॉड्यूल: में मुख्य ऐप कोड और संसाधन शामिल हैं जिनकी हर डिवाइस को आवश्यकता होती है। ये हमेशा लगा रहता है.
- कॉन्फ़िगरेशन विभाजन: भाषा संसाधनों, स्क्रीन घनत्व संसाधनों और ABI (सीपीयू आर्किटेक्चर) देशी पुस्तकालयों के लिए अलग अनुभाग।
- गतिशील सुविधा मॉड्यूल: वैकल्पिक मॉड्यूल जिन्हें प्रारंभिक स्थापना के बाद मांग पर डाउनलोड किया जा सकता है।
- एसेट पैक: गेम स्तर या मीडिया जैसी बड़ी संपत्तियां जिन्हें इंस्टॉल समय पर, मांग पर या पृष्ठभूमि में वितरित किया जा सकता है।
स्प्लिट APK जेनरेशन
जब कोई उपयोगकर्ता प्ले स्टोर से कोई ऐप डाउनलोड करता है, तो Google के सर्वर डिवाइस के कॉन्फ़िगरेशन की जांच करते हैं और उस विशिष्ट डिवाइस के अनुरूप स्प्लिट APK का एक सेट तैयार करते हैं। एक सामान्य स्थापना में शामिल हो सकते हैं:
- base.apk, मुख्य एप्लिकेशन कोड और आवश्यक संसाधन
- split_config.arm64_v8a.apk, डिवाइस के सीपीयू के लिए मूल लाइब्रेरी
- split_config.xxhdpi.apk, डिवाइस की स्क्रीन घनत्व के लिए संसाधन
- split_config.en.apk, उपयोगकर्ता के स्थान के लिए भाषा संसाधन
ये स्प्लिट APK एक सिंगल लॉजिकल ऐप के रूप में एक साथ इंस्टॉल किए जाते हैं। Android पैकेज प्रबंधक उन्हें एक एप्लिकेशन के रूप में मानता है, लेकिन वे डिवाइस पर भौतिक रूप से अलग-अलग फ़ाइलें हैं। यह वह तंत्र है जो आकार बचत को सक्षम बनाता है।
गतिशील वितरण
ऐप बंडल की सबसे शक्तिशाली विशेषताओं में से एक गतिशील डिलीवरी है। डेवलपर्स मांग पर कुछ सुविधाओं को डाउनलोड करने योग्य के रूप में चिह्नित कर सकते हैं। उदाहरण के लिए, एक फोटो संपादन ऐप में डायनामिक फीचर मॉड्यूल के रूप में उन्नत फ़िल्टर शामिल हो सकते हैं। जो उपयोगकर्ता कभी भी उन फ़िल्टर का उपयोग नहीं करते हैं वे उन्हें कभी डाउनलोड नहीं करते हैं, जिससे भंडारण स्थान की बचत होती है।
डायनामिक फ़ीचर मॉड्यूल रनटाइम पर प्ले कोर लाइब्रेरी के माध्यम से डाउनलोड और इंस्टॉल किए जाते हैं। ऐप जांच कर सकता है कि कोई मॉड्यूल इंस्टॉल है या नहीं और जरूरत पड़ने पर इसके डाउनलोड का अनुरोध करता है, इसलिए उपयोगकर्ता नई कार्यक्षमता को पूर्ण रीइंस्टॉल के बजाय एक छोटे इन-ऐप डाउनलोड के रूप में अनुभव करता है।
AAB बनाम APK: मुख्य अंतर
इन प्रारूपों के बीच अंतर को समझने से यह स्पष्ट करने में मदद मिलती है कि प्रत्येक प्रारूप कब उपयुक्त है:
- स्थापना योग्यता: APK फ़ाइलें सीधे किसी भी Android डिवाइस पर इंस्टॉल की जा सकती हैं। AAB फ़ाइलें सीधे स्थापित नहीं की जा सकतीं और उन्हें पहले संसाधित किया जाना चाहिए।
- आकार: एक सार्वभौमिक APK में सभी कॉन्फ़िगरेशन के लिए संसाधन शामिल हैं। AAB डिवाइस-विशिष्ट डिलीवरी को सक्षम बनाता है, जिसके परिणामस्वरूप छोटे डाउनलोड होते हैं।
- हस्ताक्षर करना: APK के साथ, डेवलपर अंतिम इंस्टॉल करने योग्य पैकेज पर हस्ताक्षर करता है। AAB के साथ, डेवलपर बंडल पर हस्ताक्षर करता है, और Google प्ले ऐप साइनिंग का उपयोग करके जेनरेट किए गए APK पर फिर से हस्ताक्षर करता है।
- वितरण: APK किसी भी चैनल के माध्यम से वितरित किए जा सकते हैं। AAB मुख्य रूप से प्ले स्टोर के लिए डिज़ाइन किए गए हैं, हालांकि bundletool जैसे टूल स्थानीय स्तर पर उनसे APK उत्पन्न कर सकते हैं।
- साझा करने की क्षमता: आप आसानी से किसी अन्य व्यक्ति के साथ APK फ़ाइल साझा कर सकते हैं। AAB से इंस्टॉल किए गए ऐप को साझा करने के लिए सभी विभाजित APK एकत्र करने की आवश्यकता होती है, जो अधिक जटिल है।
हस्ताक्षर विवाद
AAB अधिदेश का सबसे अधिक विवादित पहलुओं में से एक ऐप साइनिंग खेलें है। जब कोई डेवलपर AAB अपलोड करता है, तो Google उपयोगकर्ताओं को वितरित अंतिम APK पर हस्ताक्षर करने के लिए उपयोग की जाने वाली हस्ताक्षर कुंजी रखता है। इसका मतलब यह है कि Google तकनीकी रूप से APK सामग्री पर हस्ताक्षर करने और वितरित करने से पहले उसे संशोधित करने की क्षमता रखता है।
Google का तर्क है कि यह आवश्यक है क्योंकि उन्हें उत्पन्न होने वाले विभाजित APK पर हस्ताक्षर करने की आवश्यकता होती है। डेवलपर्स अपने अपलोड को प्रमाणित करने के लिए एक अपलोड कुंजी रखते हैं, लेकिन वास्तविक ऐप साइनिंग कुंजी Google के बुनियादी ढांचे द्वारा प्रबंधित की जाती है।
अधिकांश डेवलपर्स के लिए, यह एक उचित समझौता है। Google कुंजी बैकअप और पुनर्प्राप्ति सेवाएँ प्रदान करता है, और कुंजी हानि का जोखिम (जो स्थायी रूप से ऐप अपडेट को रोक देगा) समाप्त हो जाता है। हालाँकि, गोपनीयता-केंद्रित डेवलपर्स और ओपन-सोर्स अधिवक्ताओं ने विश्वास के इस केंद्रीकरण के बारे में चिंता जताई है।
ऐप्स साझा करने वाले उपयोगकर्ताओं के लिए इसका क्या अर्थ है
ऐप बंडलों में बदलाव का उन उपयोगकर्ताओं के लिए महत्वपूर्ण प्रभाव है जो प्ले स्टोर के बाहर ऐप साझा करना चाहते हैं:
इंस्टॉल किए गए ऐप्स को निकालना
जब आप AAB से इंस्टॉल किए गए किसी ऐप को निकालते हैं, तो आपको एक भी APK फ़ाइल नहीं मिलती है। इसके बजाय, आपको स्प्लिट APK का एक संग्रह मिलता है। ये विभाजन डिवाइस-विशिष्ट हैं, जिसका अर्थ है कि ARM64 प्रोसेसर और xxhdpi स्क्रीन वाले फोन से निकाला गया ऐप एक अलग कॉन्फ़िगरेशन वाले डिवाइस पर काम नहीं करेगा।
XAPK और APKS प्रारूप
स्प्लिट APK साझा करने की चुनौती का समाधान करने के लिए, XAPK और APKS जैसे कंटेनर प्रारूप बनाए गए थे। ये प्रारूप सभी विभाजित APK को एक डाउनलोड करने योग्य फ़ाइल में एक साथ बंडल करते हैं। जब आपका सामना किसी XAPK फ़ाइल से होता है, तो संभवतः इसमें एक ऐप होता है जिसे मूल रूप से ऐप बंडल के रूप में वितरित किया गया था।
हमारा XAPKS से APK कनवर्टर आपको इन कंटेनर प्रारूपों से आधार APK निकालने में मदद कर सकता है। हालाँकि, ध्यान रखें कि केवल आधार APK में हर डिवाइस पर ऐप के सही ढंग से काम करने के लिए आवश्यक सभी संसाधन शामिल नहीं हो सकते हैं, क्योंकि घनत्व और ABI-विशिष्ट संसाधन विभाजित APK में हो सकते हैं।
bundletool का उपयोग करना
Google bundletool नामक एक ओपन-सोर्स टूल प्रदान करता है जो स्थानीय रूप से AAB फ़ाइल से APK उत्पन्न कर सकता है। डेवलपर्स इसका उपयोग परीक्षण या वैकल्पिक वितरण के लिए सार्वभौमिक APK बनाने के लिए कर सकते हैं। आदेश इस प्रकार दिखता है:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
यह एक सार्वभौमिक APK उत्पन्न करता है जिसमें सभी कॉन्फ़िगरेशन के लिए सभी संसाधन शामिल होते हैं। यह डिवाइस-विशिष्ट बिल्ड से बड़ा होगा लेकिन किसी भी डिवाइस पर काम करता है। यह हमारे AAB से APK कनवर्टर द्वारा उपयोग किया जाने वाला दृष्टिकोण है।
वैकल्पिक ऐप स्टोर पर प्रभाव
AAB अधिदेश मुख्य रूप से Google Play Store को प्रभावित करता है। वैकल्पिक ऐप स्टोर और प्रत्यक्ष वितरण चैनल अभी भी APK फ़ाइलें स्वीकार कर सकते हैं। जो डेवलपर्स प्ले के बाहर वितरण करना चाहते हैं, वे अपने AAB अपलोड के साथ-साथ यूनिवर्सल APK का निर्माण जारी रख सकते हैं।
हालाँकि, कुछ डेवलपर केवल AAB बनाते हैं और वितरण के लिए पूरी तरह से Play पर निर्भर होते हैं। इसका मतलब यह है कि इन डेवलपर्स के ऐप्स को प्ले स्टोर इकोसिस्टम के बाहर प्राप्त करना कठिन है। तृतीय-पक्ष ऐप रिपॉजिटरी ने या तो विभाजित APK संग्रह (XAPK या APKS फ़ाइलों के रूप में) होस्ट करके या यूनिवर्सल APK उत्पन्न करने के लिए bundletool का उपयोग करके अनुकूलित किया है।
व्यवहार में गतिशील फ़ीचर मॉड्यूल
डायनामिक फ़ीचर मॉड्यूल ऐप बंडल प्रारूप की सबसे दिलचस्प क्षमताओं में से एक का प्रतिनिधित्व करते हैं। यहां कुछ वास्तविक दुनिया में उपयोग के मामले दिए गए हैं:
- कैमरा विशेषताएं: एक ऐप में डायनेमिक मॉड्यूल के रूप में AR फ़िल्टर शामिल हो सकते हैं, जो केवल तभी डाउनलोड होते हैं जब उपयोगकर्ता पहली बार कैमरा सुविधा तक पहुंचता है।
- भाषा पैक: कम आम भाषाओं के लिए अनुवाद डेटा को हर इंस्टॉलेशन के साथ बंडल करने के बजाय मांग पर वितरित किया जा सकता है।
- प्रारंभिक डाउनलोड को छोटा रखते हुए, खेल का स्तर: गेम्स खिलाड़ियों की प्रगति के अनुसार अतिरिक्त सामग्री प्रदान कर सकते हैं।
- व्यावसायिक उपकरण: उत्पादकता ऐप्स में उन्नत सुविधाएँ केवल उन उपयोगकर्ताओं तक ही पहुंचाई जा सकती हैं जिन्हें उनकी आवश्यकता है।
उपयोगकर्ताओं के लिए, इसका मतलब यह है कि डायनामिक मॉड्यूल डाउनलोड होने पर ऐप का इंस्टॉल आकार समय के साथ बढ़ सकता है। इसका मतलब यह भी है कि ऐसे ऐप को साझा करने के लिए सभी डाउनलोड किए गए मॉड्यूल को शामिल करना आवश्यक है, जिससे निष्कर्षण प्रक्रिया और जटिल हो जाती है।
डेवलपर्स के लिए सर्वोत्तम अभ्यास
यदि आप Android ऐप विकसित कर रहे हैं, तो ऐप बंडल के साथ प्रभावी ढंग से काम करने के लिए यहां सिफारिशें दी गई हैं:
- Play पर अपलोड करने से पहले हमेशा स्थानीय स्तर पर bundletool से परीक्षण करें। डिवाइस-विशिष्ट APK जेनरेट करें और सत्यापित करें कि वे सही तरीके से काम करते हैं।
- Play कंसोल के आंतरिक परीक्षण ट्रैक का उपयोग करें यह सत्यापित करने के लिए कि स्प्लिट APK वास्तविक उपकरणों पर इंस्टॉल और सही ढंग से काम करते हैं।
- यदि आपका उपयोगकर्ता आधार प्ले स्टोर से परे फैला हुआ है तो वैकल्पिक वितरण चैनलों के लिए एक सार्वभौमिक APK प्रदान करने पर विचार करें।
- गतिशील सुविधा मॉड्यूल सीमाओं से सावधान रहें। विशेषताएँ जो अक्सर उपयोग की जाती हैं वे बेस मॉड्यूल में होनी चाहिए, डायनेमिक मॉड्यूल में नहीं।
- विभिन्न कॉन्फ़िगरेशन वाले उपकरणों पर परीक्षण करें यह सुनिश्चित करने के लिए कि कॉन्फ़िगरेशन विभाजन सही ढंग से उत्पन्न हुए हैं और कोई संसाधन गायब नहीं हैं।
- अपनी अपलोड कुंजी सुरक्षित रखें. जबकि Google ऐप साइनिंग कुंजी का प्रबंधन करता है, आपकी अपलोड कुंजी डेवलपर के रूप में आपकी पहचान प्रमाणित करती है।
ऐप वितरण का भविष्य
ऐप बंडल प्रारूप का विकास जारी है। Google ने बड़ी गेम संपत्तियों के लिए प्ले एसेट डिलीवरी, विज्ञापन SDK के लिए SDK रनटाइम और वेयर ओएस और Android टीवी कॉन्फ़िगरेशन के लिए बेहतर समर्थन जैसी सुविधाएं पेश की हैं। रुझान ऐप घटकों की अधिक विस्तृत, ऑन-डिमांड डिलीवरी की ओर है।
उपयोगकर्ताओं के लिए, इसका मतलब यह है कि Play Store ऐप्स के लिए एकल, स्व-निहित ऐप फ़ाइल की अवधारणा कम आम होती जा रही है। XAPK, APKS जैसे प्रारूपों और उनके साथ काम करने के लिए उपलब्ध टूल को समझना उन लोगों के लिए तेजी से महत्वपूर्ण हो जाता है जो मानक Play Store प्रवाह के बाहर ऐप्स प्रबंधित करते हैं।
AAB कब रखें बनाम यूनिवर्सल APK कब बनाएं
Android ऐप बंडल ऐप्स को पैक और डिलीवर करने के तरीके में एक बुनियादी बदलाव का प्रतिनिधित्व करता है। हालांकि यह डाउनलोड आकार और वितरण दक्षता के मामले में वास्तविक लाभ लाता है, यह उन उपयोगकर्ताओं के लिए जटिलता भी पेश करता है जो ऐप साझा करते हैं या उन्हें वैकल्पिक स्रोतों से इंस्टॉल करते हैं। यह समझना कि AAB कैसे काम करते हैं, वे विभाजित APK कैसे उत्पन्न करते हैं, और प्रारूपों के बीच कनवर्ट करने के लिए कौन से उपकरण उपलब्ध हैं, आपको सही प्रारूप चुनने और आत्मविश्वास के साथ उनके बीच कनवर्ट करने की आवश्यकता है।
ऐप डिलीवर करने के तरीके को अनुकूलित करने के लिए डेवलपर्स AAB तक पहुंचते हैं; अधिकांश रोजमर्रा के उपयोगकर्ताओं को यह तभी मिलता है जब वे बिना प्ले स्टोर एक्सेस वाले डिवाइस पर कुछ इंस्टॉल करने का प्रयास करते हैं। किसी भी तरह से, याद रखने योग्य बात सरल है: AAB एक प्रकाशन प्रारूप है, स्थापना प्रारूप नहीं, और ऐसे उपकरण हैं जो दोनों के बीच के अंतर को पाटते हैं।