ज़्यादातर Android फ़ोन में ARM चिपसेट होते हैं. हालांकि, कई ChromeOS डिवाइसों में x86 चिप का इस्तेमाल किया जाता है. Kotlin या Java में लिखे गए ऐप्लिकेशन के लिए, यह अंतर अहम नहीं है. हालांकि, Android NDK में लिखे गए ऐप्लिकेशन के लिए, डिवाइस में मौजूद चिपसेट एक अहम समस्या हो सकती है. इनमें गेम इंजन से बनाए गए ऐप्लिकेशन भी शामिल हैं.
आदर्श रूप से, Android NDK कोड वाले सभी ऐप्लिकेशन को चार मुख्य Android एबीआई (ऐप्लिकेशन बाइनरी इंटरफ़ेस) के साथ शिप किया जाना चाहिए: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32), और x86_64.
इससे हर डिवाइस के लिए सबसे अच्छी परफ़ॉर्मेंस मिलती है और बैटरी की खपत सबसे कम होती है. उदाहरण के लिए, cmake पर आधारित build.gradle फ़ाइल में यह जानकारी शामिल हो सकती है:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}APK का साइज़
मोनोलिथिक APK में हर ABI से उसका साइज़ बढ़ जाता है. इससे उपयोगकर्ताओं के डिस्क स्पेस के इस्तेमाल और ऐप्लिकेशन के डाउनलोड साइज़ पर असर पड़ सकता है. साथ ही, यह Play Store के साइज़ की सीमाओं का उल्लंघन कर सकता है. इससे बचने का सबसे अच्छा तरीका है कि Android ऐप्लिकेशन बंडल का इस्तेमाल किया जाए. ऐप्लिकेशन बंडल की मदद से, Android Studio में मौजूद सभी चार एबीआई को आसानी से बंडल किया जा सकता है. हालांकि, इससे ऐप्लिकेशन का डाउनलोड साइज़ नहीं बढ़ता. इनसे डाइनैमिक डिलीवरी का फ़ायदा पाना भी आसान हो जाता है. इससे उपयोगकर्ता, गेम का बड़ा कॉन्टेंट सिर्फ़ तब डाउनलोड कर पाते हैं, जब वे ऐसा करने का अनुरोध करते हैं. अगर आपके लिए ऐप्लिकेशन बंडल का इस्तेमाल करना मुमकिन नहीं है, तो इसी तरह के व्यवहार के लिए, एक से ज़्यादा APK का इस्तेमाल किया जा सकता है.
32-बिट बनाम 64-बिट
सभी Android ऐप्लिकेशन के लिए, 64-बिट बिल्ड वर्शन उपलब्ध कराना ज़रूरी है. ARM और x86, दोनों तरह के डिवाइसों के लिए 32-बिट बिल्ड बनाना ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, Android 64-बिट का दस्तावेज़ देखें.
सिर्फ़ 64-बिट बिल्ड उपलब्ध कराने से, ज़रूरी बिल्ड टारगेट और टेस्टिंग की संख्या कम हो जाती है. हालांकि, इससे उन डिवाइसों की संख्या भी कम हो जाती है जिन पर आपका गेम चल सकता है. उदाहरण के लिए, हार्डवेयर से जुड़ी अन्य सीमाओं की वजह से, कई पुराने Chromebook पर सिर्फ़ 32-बिट वाले Android ऐप्लिकेशन चलाए जा सकते हैं. भले ही, उनमें 64-बिट वाले सीपीयू हों. यह पक्का करने के लिए कि आपका ऐप्लिकेशन इन डिवाइसों पर चल सके, 32 और 64-बिट, दोनों के लिए सहायता शामिल करें.
ध्यान दें: सभी नए और अपडेट किए गए ऐप्लिकेशन में, 64-बिट वाला ऐप्लिकेशन वर्शन शामिल करना ज़रूरी है. Play Store ने उन डिवाइसों पर 32-बिट वाले ऐप्लिकेशन उपलब्ध कराना बंद कर दिया है जो 64-बिट वाले ऐप्लिकेशन इस्तेमाल कर सकते हैं. ज़्यादातर Chromebook में 64-बिट की सुविधा होती है. हमारा सुझाव है कि आप अपने ऐप्लिकेशन को जल्द से जल्द अपडेट करें, ताकि उसमें 64-बिट वर्शन शामिल किया जा सके. इससे ChromeOS पर ऐप्लिकेशन इस्तेमाल करने वाले लोगों को बिना किसी रुकावट के ऐप्लिकेशन का इस्तेमाल करने की सुविधा मिलती रहेगी.
ARM अनुवाद
x86 Chromebooks, जब भी मुमकिन होता है, तब ARM कोड का अनुवाद करने की कोशिश करते हैं. हालांकि, अनुवाद करने से परफ़ॉर्मेंस धीमी हो जाती है और बैटरी ज़्यादा खर्च होती है. बेहतर उपयोगकर्ता अनुभव के लिए, सामान्य गेम के लिए भी x86 बिल्ड उपलब्ध कराए जाने चाहिए. अगर x86 बिल्ड उपलब्ध नहीं कराए जा सकते, तो ध्यान दें कि कुछ x86 Chromebook, arm64 कोड का अनुवाद नहीं कर सकते. इस मामले में, आपको अपने बिल्ड में arm32 और arm64, दोनों एबीआइ शामिल करने चाहिए.
arm32 का अनुवाद करने की सुविधा, Android ऐप्लिकेशन इस्तेमाल करने की सुविधा वाले सभी Chromebook पर उपलब्ध है. हालांकि, सभी Chromebook पर arm64 कोड का अनुवाद नहीं किया जा सकता. इसका मतलब है कि अगर आपके गेम में सिर्फ़ arm64 बिल्ड टारगेट हैं, तो यह ChromeOS का इस्तेमाल करने वाले ज़्यादातर डिवाइसों पर उपलब्ध नहीं होगा. अगर x86 बाइनरी शिप नहीं की जा सकती हैं, तो अपनी बिल्ड में arm32 और arm64, दोनों एबीआई शामिल करें.
| शामिल किए गए एबीआई | ChromeOS के लिए सहायता |
|---|---|
arm64 | खराब |
arm32/arm64 | ठीक है (अनुवाद के साथ) |
arm32/arm64/x86_32/x86_64 | सबसे अच्छी |