Chromebook जैसे ChromeOS डिवाइसों पर, Google Play Store और Android ऐप्लिकेशन काम करते हैं. इस दस्तावेज़ में यह माना गया है कि आपके पास पहले से ही कोई ऐसा Android ऐप्लिकेशन है जिसे फ़ोन या टैबलेट के लिए डिज़ाइन किया गया है. अब आपको उसे Chromebook के लिए ऑप्टिमाइज़ करना है. Android ऐप्लिकेशन बनाने की बुनियादी बातें जानने के लिए, अपना पहला Android ऐप्लिकेशन बनाएं लेख पढ़ें.
अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल अपडेट करना
शुरू करने के लिए, अपनी मेनिफ़ेस्ट फ़ाइल को अपडेट करें. इससे Chromebook और Android पर चलने वाले अन्य डिवाइसों के बीच, हार्डवेयर और सॉफ़्टवेयर से जुड़े कुछ मुख्य अंतरों का पता चलेगा.
ChromeOS के M53 वर्शन के बाद, ऐसे सभी Android ऐप्लिकेशन ChromeOS डिवाइसों पर काम करते हैं जिनके लिए android.hardware.touchscreen सुविधा की ज़रूरत नहीं होती. हालांकि, इसके लिए ज़रूरी है कि ChromeOS डिवाइसों पर android.hardware.faketouch सुविधा काम करती हो. हालांकि, अपने ऐप्लिकेशन को सभी Chromebook पर काम करने लायक बनाने के लिए, अपनी मेनिफ़ेस्ट फ़ाइल को अपडेट करें. इससे android.hardware.touchscreen सुविधा की ज़रूरत नहीं पड़ेगी. इस बारे में यहां दिए गए उदाहरण में बताया गया है.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
... >
<!-- Some Chromebooks don't support touch. Although not essential,
it's a good idea to explicitly include this declaration. -->
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
</manifest>
अलग-अलग हार्डवेयर डिवाइसों में अलग-अलग तरह के सेंसर होते हैं. ऐसा हो सकता है कि Chromebook में, Android फ़ोन और टैबलेट में मौजूद सभी सेंसर न हों. जैसे, जीपीएस और एक्सलरोमीटर. हालांकि, कुछ मामलों में सेंसर की सुविधा किसी दूसरे तरीके से दी जाती है. उदाहरण के लिए, Chromebook में जीपीएस सेंसर नहीं होते हैं. हालांकि, ये वाई-फ़ाई कनेक्शन के आधार पर जगह की जानकारी का डेटा उपलब्ध कराते हैं. Android प्लैटफ़ॉर्म पर काम करने वाले सेंसर के बारे में ज़्यादा जानने के लिए, सेंसर के बारे में खास जानकारी देखें.
अगर आपको सेंसर की उपलब्धता के बावजूद, अपने ऐप्लिकेशन को Chromebook पर चलाना है, तो अपनी मेनिफ़ेस्ट फ़ाइल अपडेट करें, ताकि किसी भी सेंसर की ज़रूरत न पड़े.
सॉफ़्टवेयर की कुछ सुविधाएँ, Chromebook पर काम नहीं करती हैं. उदाहरण के लिए, कस्टम IME, ऐप्लिकेशन विजेट, लाइव वॉलपेपर, और ऐप्लिकेशन लॉन्चर की सुविधा देने वाले ऐप्लिकेशन, Chromebook पर काम नहीं करते. इन्हें Chromebook पर इंस्टॉल भी नहीं किया जा सकता. सॉफ़्टवेयर की उन सुविधाओं की पूरी सूची देखने के लिए जो Chromebook पर काम नहीं करती हैं, Chromebook पर काम न करने वाली सॉफ़्टवेयर सुविधाएं लेख पढ़ें.
टारगेट किए गए एसडीके को अपडेट करना
अपने ऐप्लिकेशन के targetSdkVersion एट्रिब्यूट को अपडेट करके, Android प्लैटफ़ॉर्म के सभी सुधारों का फ़ायदा पाने के लिए, उसे उपलब्ध सबसे नए एपीआई लेवल पर सेट करें.
Android प्लैटफ़ॉर्म के अलग-अलग वर्शन में किए गए सुधारों के बारे में जानें.
नेटवर्किंग से जुड़ी ज़रूरी शर्तें देखना
Chromebook, पूरे Android OS को कंटेनर में चलाते हैं. यह Docker या LXC की तरह होता है. इसका मतलब है कि Android के पास सिस्टम के LAN इंटरफ़ेस का सीधा ऐक्सेस नहीं है. इसके बजाय, IPv4 ट्रैफ़िक, नेटवर्क एड्रेस ट्रांसलेशन (एनएटी) की इंटरनल लेयर से होकर गुज़रता है. साथ ही, IPv6 यूनिकास्ट ट्रैफ़िक को एक अतिरिक्त हॉप के ज़रिए रूट किया जाता है.
Android ऐप्लिकेशन से इंटरनेट पर भेजे जाने वाले यूनिकास्ट कनेक्शन, ज़्यादातर मामलों में पहले की तरह काम करते हैं. आम तौर पर, आने वाले कनेक्शन ब्लॉक कर दिए जाते हैं. Android डिवाइस से भेजे गए मल्टीकास्ट या ब्रॉडकास्ट पैकेट, फ़ायरवॉल के ज़रिए LAN पर फ़ॉरवर्ड नहीं किए जाते.
मल्टीकास्ट पर पाबंदी के बावजूद, ChromeOS एक ऐसी सेवा चलाता है जो Android और LAN इंटरफ़ेस के बीच mDNS ट्रैफ़िक को फ़ॉरवर्ड करती है. इसलिए, LAN सेगमेंट पर मौजूद अन्य डिवाइसों का पता लगाने के लिए, स्टैंडर्ड नेटवर्क सेवा की खोज वाले एपीआई इस्तेमाल करने का सुझाव दिया जाता है. लैन पर किसी डिवाइस का पता लगाने के बाद, Android ऐप्लिकेशन उससे कम्यूनिकेट करने के लिए, स्टैंडर्ड टीसीपी या यूडीपी यूनिकास्ट सॉकेट का इस्तेमाल कर सकता है.
Android से शुरू होने वाले IPv4 कनेक्शन, ChromeOS होस्ट के IPv4 पते का इस्तेमाल करते हैं. इंटरनल तौर पर, Android ऐप्लिकेशन को नेटवर्क इंटरफ़ेस को असाइन किया गया निजी IPv4 पता दिखता है. Android से शुरू होने वाले IPv6 कनेक्शन, ChromeOS होस्ट से अलग पते का इस्तेमाल करते हैं. ऐसा इसलिए होता है, क्योंकि Android कंटेनर के पास एक खास सार्वजनिक IPv6 पता होता है.
क्लाउड और लोकल स्टोरेज का सही तरीके से इस्तेमाल करना
Chromebook की मदद से, उपयोगकर्ता आसानी से एक डिवाइस से दूसरे डिवाइस पर माइग्रेट कर सकते हैं. अगर कोई उपयोगकर्ता एक Chromebook का इस्तेमाल बंद करके दूसरे Chromebook का इस्तेमाल शुरू करता है, तो उसे सिर्फ़ साइन इन करना होता है. इसके बाद, उसके सभी ऐप्लिकेशन दिखने लगते हैं.
इस सुविधा की वजह से, अपने ऐप्लिकेशन के डेटा का बैक अप क्लाउड पर लें, ताकि इसे अलग-अलग डिवाइसों पर सिंक किया जा सके. हालांकि, अपने ऐप्लिकेशन के सामान्य तरीके से काम करने के लिए, इंटरनेट कनेक्शन पर निर्भर न रहें. इसके बजाय, जब डिवाइस ऑफ़लाइन हो, तब उपयोगकर्ता के काम को स्थानीय तौर पर सेव करें. इसके बाद, जब डिवाइस फिर से ऑनलाइन हो जाए, तब उसे क्लाउड पर सिंक करें.
Chromebook को कई लोगों के साथ शेयर किया जा सकता है. जैसे, स्कूलों में. लोकल स्टोरेज की क्षमता सीमित होती है. इसलिए, पूरे खाते और उनके स्टोरेज को किसी भी समय डिवाइस से हटाया जा सकता है. शिक्षा से जुड़ी सेटिंग के लिए, इस स्थिति को ध्यान में रखना बेहतर होता है.
अपने ऐप्लिकेशन के लिए नए टेस्ट केस डेवलप करना
अपने ऐप्लिकेशन के लिए टेस्ट केस डेवलप करने से पहले, पक्का करें कि आपने सही मेनिफ़ेस्ट फ़्लैग तय किए हों. खास तौर पर, screenOrientation को unspecified पर सेट करें. अगर आपको लैंडस्केप ओरिएंटेशन के बारे में बताना है, तो sensorLandscape का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि टैबलेट पर बेहतर अनुभव मिले.
अगर आपको डेस्कटॉप एनवायरमेंट के लिए, खास साइज़ या ओरिएंटेशन की ज़रूरत है, तो साइज़ या ओरिएंटेशन के हिंट के तौर पर मेटा टैग जोड़ें. फ़ोन पर साइज़ और ओरिएंटेशन शामिल करने के लिए, लेआउट defaultHeight, defaultWidth या minHeight एट्रिब्यूट की वैल्यू सबमिट करें.
अगर आपको डिवाइस की कुछ कैटगरी के लिए, इनपुट डिवाइस को हैंडल करने की सुविधा चाहिए, तो इनपुट डिवाइस के साथ काम करने वाले मोड को बंद करने के लिए android.hardware.type.pc को चुनें.
अगर किसी तरह की नेटवर्किंग का इस्तेमाल किया जा रहा है, तो पक्का करें कि कनेक्शन की समस्या हल होने या डिवाइस के स्लीप मोड से बाहर आने के बाद, ऐप्लिकेशन नेटवर्क से फिर से कनेक्ट हो सके.
हमारा सुझाव है कि आप Chrome OS पर Android ऐप्लिकेशन के लिए टेस्ट केस की सूची देखें. इसका इस्तेमाल अपने टेस्ट प्लान में किया जा सकता है. इन टेस्ट केस में, सामान्य स्थितियां शामिल होती हैं. अगर Android ऐप्लिकेशन को ChromeOS डिवाइसों पर चलाने की उम्मीद है, तो उन्हें इन स्थितियों के लिए तैयार रहना चाहिए.
मल्टी-विंडो और ओरिएंटेशन में बदलाव
ChromeOS में एक साथ कई विंडो इस्तेमाल की जा सकती हैं. इस वजह से, स्टेट को सेव रखने और उसे वापस लाने से जुड़ी समस्याएं ज़्यादा साफ़ तौर पर दिख सकती हैं. ज़रूरत पड़ने पर, अपनी स्थिति को सेव करने और उसे वापस लाने के लिए, ViewModel का इस्तेमाल करें.
स्टेट परसिस्टेंस की जांच करने के लिए, अपने ऐप्लिकेशन को कुछ समय के लिए छोटा करें. इसके बाद, ज़्यादा संसाधन इस्तेमाल करने वाली कोई दूसरी प्रोसेस शुरू करें. इसके बाद, अपने ऐप्लिकेशन को वापस लाएं. इससे यह पुष्टि हो जाएगी कि ऐप्लिकेशन उसी स्थिति में वापस आ गया है जिसमें आपने उसे छोड़ा था.
फ़ुल स्क्रीन की सुविधा चालू करने वाली कुंजी (F4) दबाकर, विंडो को बड़ा करके, और उसे पहले जैसा करके देखें कि विंडो का साइज़ बदलने की सुविधा काम कर रही है या नहीं. मुफ़्त में रीसाइज़ करने की सुविधा की जांच करने के लिए, सबसे पहले डेवलपर विकल्पों में जाकर इसे चालू करें. इसके बाद, देखें कि आपका ऐप्लिकेशन बिना क्रैश हुए आसानी से रीसाइज़ हो रहा है या नहीं.
अगर आपके ChromeOS डिवाइस पर यह सुविधा काम करती है, तो लैपटॉप मोड से टैबलेट मोड पर स्विच करें. इसके बाद, देखें कि सभी सुविधाएं ठीक से काम कर रही हैं या नहीं. टैबलेट मोड में डिवाइस को घुमाकर, स्क्रीन की दिशा में होने वाले बदलावों की जांच करें. इसके बाद, लैपटॉप मोड पर वापस आएं. इस चरण को कुछ बार दोहराएं.
पक्का करें कि टॉप बार की वजह से, आपके ऐप्लिकेशन में यूज़र इंटरफ़ेस (यूआई) एलिमेंट या जगह के हिसाब से टच इनपुट में कोई समस्या न आ रही हो. ChromeOS डिवाइसों के लिए, पक्का करें कि आपका ऐप्लिकेशन स्टेटस बार वाले हिस्से में ज़रूरी जानकारी न दिखाए.
अगर कैमरे या पेन जैसी किसी अन्य हार्डवेयर सुविधा का इस्तेमाल किया जा रहा है, तो पक्का करें कि विंडो और डिवाइस में किए गए बदलावों के दौरान, यह सुविधा ठीक से काम कर रही हो.