इंस्टैंट ऐप्लिकेशन, Android 10 की मुख्य सुविधा है. इसलिए, यह ज़रूरी है कि ये ठीक से काम करें. इंस्टैंट ऐप्लिकेशन अपने-आप इंस्टॉल हो जाते हैं. इसलिए, इनमें सीमित सुविधाएं होती हैं और ये ज़्यादा पाबंदी वाले सुरक्षा सैंडबॉक्स में चलते हैं. इन पाबंदियों के लागू होने की वजह से, सिस्टम के किसी भी हिस्से के इंस्टैंट ऐप्लिकेशन के साथ ठीक से काम न करने का खतरा बना रहता है. यह पक्का करने के लिए कि Instant Apps की अनुमति वाले व्यवहार काम कर रहे हैं, CTS टेस्ट का एक सबसेट बनाया जाता है. मुख्य मकसद, पोर्ट किए जाने वाले टेस्ट के कम से कम सेट को अलग करके, सीटीएस के साइज़ में बढ़ोतरी को कम करना है. इंस्टैंट ऐप्लिकेशन मोड में सीटीएस चलाने का मतलब है कि जांच के लिए इस्तेमाल होने वाले APK को इंस्टैंट ऐप्लिकेशन के तौर पर इंस्टॉल करना और जांच करना.
इंस्टैंट ऐप्लिकेशन से जुड़ी पाबंदियां
उपयोगकर्ता, इंस्टैंट ऐप्लिकेशन इंस्टॉल नहीं करता. इसलिए, ये ऐप्लिकेशन पाबंदी वाले सैंडबॉक्स में चलते हैं. इन पर ये पाबंदियां लागू होती हैं:
- इसमें सिर्फ़ कुछ अनुमतियां हो सकती हैं.
- जब तक अन्य ऐप्लिकेशन को 'इंस्टैंट ऐप्लिकेशन के लिए उपलब्ध' के तौर पर मार्क नहीं किया जाता, तब तक उन्हें नहीं देखा जा सकता.
- सिर्फ़ कुछ सिस्टम सेटिंग को ऐक्सेस कर सकता है.
- सिर्फ़ कुछ सिस्टम प्रॉपर्टी ऐक्सेस की जा सकती हैं.
- सेवाएं/सेवा देने वाली कंपनियां नहीं दिखाई जा सकतीं.
- ब्रॉडकास्ट के लिए खास नियमों के साथ, मैसेज भेजे और पाए जा सकते हैं.
इसके अलावा, इंस्टैंट ऐप्लिकेशन को नए सुरक्षा सैंडबॉक्स को ज़्यादा पाबंदियां जोड़ने की अनुमति देने के लिए ऑप्ट इन करना होगा. इंस्टैंट ऐप्लिकेशन के खास व्यवहार की यह विस्तृत रेंज, पूरे प्लैटफ़ॉर्म पर काम करती है. इसलिए, यह पुष्टि करने का कोई तरीका होना चाहिए कि इंस्टैंट ऐप्लिकेशन, नेटवर्क के सभी डिवाइसों पर उम्मीद के मुताबिक काम करते हैं.
'इंस्टैंट ऐप्लिकेशन' मोड में चल रहे टेस्ट
सभी सीटीएस मॉड्यूल में, इंस्टैंट ऐप्लिकेशन पर लागू होने वाले टेस्ट नहीं होते. अगर मॉड्यूल की जांच की गई सुविधा, सिस्टम सर्वर के साथ इंटरैक्ट करती है, तो इन टेस्ट को इंस्टैंट ऐप्लिकेशन मोड में चलाया जाना चाहिए. उदाहरण के लिए, OpenGL टेस्ट सिस्टम सर्वर के साथ इंटरैक्ट नहीं कर रहे हैं और इसलिए उन्हें 'इंस्टैंट ऐप्लिकेशन' मोड में चलाने की ज़रूरत नहीं है. इस समय सुलभता की जांच, सिस्टम सर्वर से इंटरैक्ट करती हैं. हालांकि, उन्हें 'इंस्टैंट ऐप्लिकेशन' मोड में चलाना ज़रूरी है.
उपयोगकर्ताओं को यह पता लगाना होगा कि कौनसे मॉड्यूल लागू हैं. साथ ही, यह भी तय करना होगा कि इन मॉड्यूल में कौनसे टेस्ट काम के हैं. उदाहरण के लिए, प्लग किए जा सकने वाले आर्किटेक्चर (उदाहरण के लिए, AccessibilityService) के लिए किसी सेवा से जुड़ी खास कार्रवाइयों की जांच करना, इंस्टैंट ऐप्लिकेशन मोड पर लागू नहीं होता. इसकी वजह यह है कि इंस्टैंट ऐप्लिकेशन, सेवाओं को अन्य ऐप्लिकेशन (प्लैटफ़ॉर्म शामिल है) पर नहीं दिखा सकता, जबकि ऐप्लिकेशन-साइड के व्यवहार की पुष्टि करने वाले टेस्ट, इंस्टैंट ऐप्लिकेशन मोड के लिए लागू होते हैं. एक और उदाहरण, ऐसी अनुमति के पीछे के व्यवहार की पुष्टि करने वाला टेस्ट है जिसे Instant App मोड में इस्तेमाल नहीं किया जा सकता. टेस्ट का एक ऐसा सेट है जो सिर्फ़ 'इंस्टैंट ऐप्लिकेशन' पर लागू होता है. यह इन नियमों की पुष्टि करता है: ये ऐप्लिकेशन कैसे काम करते हैं, सेवाओं के बारे में नहीं बताना या अन्य ऐप्लिकेशन का न दिखना. आम तौर पर, ये पहले से लिखे होते हैं और इन्हें पोर्ट करने की ज़रूरत नहीं होती.
इंस्टैंट ऐप्लिकेशन मोड में गड़बड़ियों की जांच करना
अगर जांच में यह गड़बड़ी मिलती है कि वह ऐसी सुविधा की पुष्टि कर रही है जिसे इंस्टैंट ऐप्लिकेशन ऐक्सेस नहीं कर सकते, तो इसका मतलब है कि यह जांच, इंस्टैंट ऐप्लिकेशन मोड में लागू नहीं होती. टेस्ट को सिर्फ़ @AppModeFull
के साथ एनोटेट करके, उसे सिर्फ़ फ़ुल ऐप्लिकेशन मोड में चलाने के लिए मार्क करें. इस एनोटेशन को क्लास लेवल पर लागू करके, उसमें मौजूद सभी टेस्ट को बाहर रखा जा सकता है.
अगर इंस्टैंट ऐप्लिकेशन के लिए ऐक्सेस की जा सकने वाली कोई सुविधा काम नहीं कर रही है और इस वजह से जांच पूरी नहीं हो पा रही है, तो बग की शिकायत करें.
समस्या का हल
अगर आपका टेस्ट DEVICE पर MyCtsModule.apk इंस्टॉल नहीं हो सका गड़बड़ी के साथ पूरा नहीं होता है. वजह: '-116', लॉगकैट पर PackageManager के मैसेज देखें. उदाहरण के लिए, अगर आपको Full ऐप्लिकेशन को Instant ऐप्लिकेशन: your_app से बदला नहीं जा सकता मैसेज मिलता है, तो सबसे पहले adb का इस्तेमाल करके अपने ऐप्लिकेशन को अनइंस्टॉल करें.