AAB को APK ऑनलाइन में कनवर्ट करें: यह टूल वास्तव में क्या करता है
Android ऐप बंडल (.aab) वह प्रारूप है जिसे Google Play डेवलपर्स को अपलोड करने के लिए कहता है, लेकिन यह ऐसा कुछ नहीं है जिसे आप फोन पर इंस्टॉल कर सकते हैं। यदि आपके पास बिल्ड सर्वर, सीआई पाइपलाइन या किसी सहकर्मी से .aab फ़ाइल है, तो आपको सबसे पहले इसे इंस्टॉल करने योग्य .apk में बदलना होगा। यह पेज आपको उस काम के लिए दो चीजें देता है: एक इंटरैक्टिव AAB से APK कमांड बिल्डर जो आपके ऑपरेटिंग सिस्टम के लिए सटीक bundletool कमांड लिखता है, और एक AAB फ़ाइल एक्सप्लोरर जो आपके ब्राउज़र में बंडल खोलता है ताकि आप इसे परिवर्तित करने से पहले देख सकें कि अंदर क्या है।
रूपांतरण स्वयं Google के आधिकारिक bundletool के माध्यम से चलता है, जो एक जावा प्रोग्राम है। क्योंकि bundletool को जावा रनटाइम और आपके कीस्टोर तक पहुंच की आवश्यकता होती है, वास्तविक निर्माण चरण आपकी अपनी मशीन पर होता है, हमारे सर्वर पर नहीं। आपकी .aab फ़ाइल कभी भी कहीं अपलोड नहीं की जाती है। बिल्डर केवल अनुमान को हटा देता है ताकि आप ध्वज नामों को याद रखने के बजाय एक सही, रेडी-टू-रन कमांड की प्रतिलिपि बना सकें।
AAB बनाम APK: आप फ़ाइल का नाम क्यों नहीं बदल सकते
बहुत से लोग एक्सटेंशन का नाम बदलकर AAB को APK में बदलने का तरीका खोजते हैं, और यह कभी काम नहीं करता है। .apk एक एकल, स्व-निहित पैकेज है जिसे Android सीधे इंस्टॉल कर सकता है। .aab एक प्रकाशन कंटेनर है: यह आपके संकलित कोड और संसाधनों को मॉड्यूल में विभाजित रखता है, और यह उम्मीद करता है कि Google Play या bundletool इससे अंतिम, डिवाइस-अनुकूलित APK उत्पन्न करेगा। फ़ाइल का नाम बदलने से वे मॉड्यूल अनपैक नहीं होते हैं या कुछ भी साइन नहीं होता है, इसलिए Android इसे इंस्टॉल करने से इंकार कर देता है। APK के लिए Android ऐप बंडल को परिवर्तित करने का एकमात्र विश्वसनीय तरीका bundletool को आपके लिए APK सेट बनाने देना है।
Windows, मैक और लिनक्स पर AAB को APK में कैसे बदलें
प्रत्येक प्लेटफ़ॉर्म पर चरण समान होते हैं, और केवल फ़ाइल-पथ शैली बदलती है, यही कारण है कि ऊपर दिए गए कमांड बिल्डर में Windows, macOS और लिनक्स स्विच होता है। आरंभ से अंत तक संपूर्ण प्रवाह यहां दिया गया है:
- यह पुष्टि करने के लिए कि जावा आपके PATH पर है, जावा जेडीके 8 या नया स्थापित करें। एक टर्मिनल में java -version चलाएँ।
- bundletool डाउनलोड करें. Google के आधिकारिक GitHub रिलीज़ पेज से नवीनतम bundletool-all.jar प्राप्त करें।
- APK सेट बनाएं। bundletool को अपने बंडल पर इंगित करें और इसे एक .apks संग्रह तैयार करने दें: java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
- .apks संग्रह खोलें. यह सिर्फ एक ज़िप फ़ाइल है, इसलिए इसे निकालें और आपको अंदर universal.apk मिलेगा।
- अपने डिवाइस पर इंस्टॉल करें. APK को अपने फोन में कॉपी करें और इसे साइडलोड करें, या USB से कनेक्टेड डिवाइस के साथ bundletool install-apks का उपयोग करें।
यूनिवर्सल APK बनाम स्प्लिट APK: आपको कौन सा बनाना चाहिए?
यदि आप एक फ़ाइल चाहते हैं जो किसी भी फ़ोन पर इंस्टॉल हो, तो --mode=universal का उपयोग करें। यह एक एकल आपके AAB से यूनिवर्सल APK बनाता है जो प्रत्येक सीपीयू आर्किटेक्चर, स्क्रीन घनत्व और भाषा को एक पैकेज में बंडल करता है। यह बड़ा है, लेकिन प्ले स्टोर के बाहर किसी बिल्ड का परीक्षण, संग्रह या साझा करने के लिए यह सबसे सरल विकल्प है। यदि आप मोड को छोड़ देते हैं, तो bundletool इसके बजाय स्प्लिट APK उत्पन्न करता है जो एक विशिष्ट डिवाइस के लिए ट्रिम किए जाते हैं, इसलिए वे छोटे डाउनलोड करते हैं लेकिन आपको मिलान सेट को एक साथ इंस्टॉल करना होगा। अधिकांश लोगों के लिए जिन्हें त्वरित इंस्टॉल के लिए .aab को परिवर्तित करने की आवश्यकता है, यूनिवर्सल APK सही विकल्प है।
AAB से प्राप्त APK पर हस्ताक्षर करना
Android तब तक APK इंस्टॉल नहीं करेगा जब तक उस पर हस्ताक्षर न किया गया हो। परीक्षण के लिए, bundletool स्वचालित रूप से डिबग कुंजी के साथ हस्ताक्षर कर सकता है, जो कि बिल्डर में "डिबग कीस्टोर का उपयोग करें" विकल्प बिल्कुल वैसा ही करता है। यदि आप एक रिलीज़ बिल्ड तैयार कर रहे हैं, उदाहरण के लिए अपनी वेबसाइट पर वितरित करने के लिए, तो कीस्टोर पथ, कीस्टोर पासवर्ड, कुंजी उपनाम और कुंजी पासवर्ड फ़ील्ड भरकर अपने स्वयं के कीस्टोर से उस पर हस्ताक्षर करें। इसके बाद बिल्डर --ks, --ks-pass, --ks-key-alias, और --key-pass झंडे जोड़ता है ताकि आपको जो APK मिलता है वह डिबग डिबग के बजाय आपके वास्तविक उत्पादन हस्ताक्षर को प्रदर्शित करता है।
सामान्य bundletool त्रुटियाँ और उन्हें कैसे ठीक करें
दो समस्याएँ बार-बार सामने आती हैं। संदेश "bundletool: कमांड नहीं मिला" का अर्थ है कि आपने bundletool को ऐसे चलाने का प्रयास किया जैसे कि यह एक अंतर्निहित कमांड हो। यह एक JAR फ़ाइल है, इसलिए आप इसे हमेशा java -jar bundletool-all.jar से कॉल करें। "कोई कुंजी/प्रमाणपत्र नहीं" त्रुटि का अर्थ है कि हस्ताक्षर विवरण गायब हैं: या तो अहस्ताक्षरित परीक्षण निर्माण के लिए --mode=universal जोड़ें, या ऊपर बताए अनुसार अपने कीस्टोर फ़्लैग प्रदान करें। पृष्ठ के ऊपर स्थित समस्या निवारण टैब इनमें से अधिक को कवर करता है, और AAB एक्सप्लोरर आपको किसी कमांड को डीबग करने में समय बिताने से पहले यह पुष्टि करने देता है कि आपके बंडल में वास्तव में वे मॉड्यूल हैं जिनकी आप अपेक्षा करते हैं।
आपको वास्तव में AAB को परिवर्तित करने की आवश्यकता कब होगी?
सामान्य कारण हैं प्रकाशित करने से पहले वास्तविक डिवाइस पर रिलीज़ बिल्ड का परीक्षण करना, बिल्ड को ऐसे परीक्षक को सौंपना जो Google Play का उपयोग नहीं करता है, अपने रिकॉर्ड के लिए अपने स्वयं के ऐप की इंस्टॉल करने योग्य प्रतिलिपि रखना, या हार्डवेयर पर QA चलाना जहां Play Store आंतरिक परीक्षण नहीं पहुंचता है। कारण जो भी हो, केवल उन्हीं ऐप बंडलों को कनवर्ट करें जिनका उपयोग करने का आपके पास अधिकार है, जैसे कि आपके स्वयं के बिल्ड या बंडल जिनके साथ काम करने की आपको स्पष्ट अनुमति है।