Instant Apps के लिए सीटीएस

इंस्टैंट ऐप्लिकेशन, Android 10 की मुख्य सुविधा है. इसलिए, यह ज़रूरी है कि ये ठीक से काम करें. इंस्टैंट ऐप्लिकेशन अपने-आप इंस्टॉल हो जाते हैं. इसलिए, इनमें सीमित सुविधाएं होती हैं और ये ज़्यादा पाबंदी वाले सुरक्षा सैंडबॉक्स में चलते हैं. इन पाबंदियों के लागू होने की वजह से, सिस्टम के किसी भी हिस्से के इंस्टैंट ऐप्लिकेशन के साथ ठीक से काम न करने का खतरा बना रहता है. यह पक्का करने के लिए कि Instant Apps की अनुमति वाले व्यवहार काम कर रहे हैं, CTS टेस्ट का एक सबसेट बनाया जाता है. मुख्य मकसद, पोर्ट किए जाने वाले टेस्ट के कम से कम सेट को अलग करके, सीटीएस के साइज़ में बढ़ोतरी को कम करना है. इंस्टैंट ऐप्लिकेशन मोड में सीटीएस चलाने का मतलब है कि जांच के लिए इस्तेमाल होने वाले APK को इंस्टैंट ऐप्लिकेशन के तौर पर इंस्टॉल करना और जांच करना.

इंस्टैंट ऐप्लिकेशन से जुड़ी पाबंदियां

उपयोगकर्ता, इंस्टैंट ऐप्लिकेशन इंस्टॉल नहीं करता. इसलिए, ये ऐप्लिकेशन पाबंदी वाले सैंडबॉक्स में चलते हैं. इन पर ये पाबंदियां लागू होती हैं:

  • इसमें सिर्फ़ कुछ अनुमतियां हो सकती हैं.
  • जब तक अन्य ऐप्लिकेशन को 'इंस्टैंट ऐप्लिकेशन के लिए उपलब्ध' के तौर पर मार्क नहीं किया जाता, तब तक उन्हें नहीं देखा जा सकता.
  • सिर्फ़ कुछ सिस्टम सेटिंग को ऐक्सेस कर सकता है.
  • सिर्फ़ कुछ सिस्टम प्रॉपर्टी ऐक्सेस की जा सकती हैं.
  • सेवाएं/सेवा देने वाली कंपनियां नहीं दिखाई जा सकतीं.
  • ब्रॉडकास्ट के लिए खास नियमों के साथ, मैसेज भेजे और पाए जा सकते हैं.

इसके अलावा, इंस्टैंट ऐप्लिकेशन को नए सुरक्षा सैंडबॉक्स को ज़्यादा पाबंदियां जोड़ने की अनुमति देने के लिए ऑप्ट इन करना होगा. इंस्टैंट ऐप्लिकेशन के अलग-अलग तरह के खास व्यवहार, पूरे प्लैटफ़ॉर्म पर काम करते हैं. इसलिए, यह पुष्टि करने का कोई तरीका होना चाहिए कि इंस्टैंट ऐप्लिकेशन, नेटवर्क के सभी डिवाइसों पर उम्मीद के मुताबिक काम करते हैं.

इंस्टैंट ऐप्लिकेशन मोड में चल रहे टेस्ट

सभी सीटीएस मॉड्यूल में, इंस्टैंट ऐप्लिकेशन पर लागू होने वाले टेस्ट नहीं होते. अगर मॉड्यूल की जांच की गई सुविधा, सिस्टम सर्वर के साथ इंटरैक्ट करती है, तो इन टेस्ट को इंस्टैंट ऐप्लिकेशन मोड में चलाया जाना चाहिए. उदाहरण के लिए, OpenGL टेस्ट, सिस्टम सर्वर के साथ इंटरैक्ट नहीं करते. इसलिए, इन्हें इंस्टैंट ऐप्लिकेशन मोड में चलाने की ज़रूरत नहीं है. वहीं, सुलभता टेस्ट, सिस्टम सर्वर के साथ इंटरैक्ट करते हैं. इसलिए, इन्हें इंस्टैंट ऐप्लिकेशन मोड में चलाना ज़रूरी है.

उपयोगकर्ताओं को यह पता लगाना होगा कि कौनसे मॉड्यूल लागू हैं. साथ ही, यह भी तय करना होगा कि इन मॉड्यूल में कौनसे टेस्ट काम के हैं. उदाहरण के लिए, प्लग इन किए जा सकने वाले आर्किटेक्चर (जैसे, AccessibilityService) के लिए, सेवा के हिसाब से व्यवहार की जांच करना, इंस्टैंट ऐप्लिकेशन मोड के लिए लागू नहीं होता. इसकी वजह यह है कि इंस्टैंट ऐप्लिकेशन, अन्य ऐप्लिकेशन (इसमें प्लैटफ़ॉर्म भी शामिल है) को सेवाएं नहीं दिखा सकते. वहीं, ऐप्लिकेशन के व्यवहार की पुष्टि करने वाले टेस्ट, इंस्टैंट ऐप्लिकेशन मोड के लिए लागू होते हैं. एक और उदाहरण, ऐसी अनुमति के पीछे के व्यवहार की पुष्टि करने वाला टेस्ट है जिसे Instant App मोड में इस्तेमाल नहीं किया जा सकता. कुछ टेस्ट सिर्फ़ इंस्टैंट ऐप्लिकेशन पर लागू होते हैं. इनसे यह पुष्टि की जाती है कि इंस्टैंट ऐप्लिकेशन कैसे काम करते हैं. उदाहरण के लिए, सेवाओं को एक्सपोज़ न करना या दूसरे ऐप्लिकेशन न दिखाना. आम तौर पर, ये पहले से लिखे होते हैं और इन्हें पोर्ट करने की ज़रूरत नहीं होती.

इंस्टैंट ऐप्लिकेशन मोड में गड़बड़ियों की जांच करना

अगर जांच में यह गड़बड़ी मिलती है कि वह ऐसी सुविधा की पुष्टि कर रही है जिसे इंस्टैंट ऐप्लिकेशन ऐक्सेस नहीं कर सकते, तो इसका मतलब है कि यह जांच, इंस्टैंट ऐप्लिकेशन मोड में लागू नहीं होती. टेस्ट को सिर्फ़ @AppModeFull के साथ एनोटेट करके, उसे सिर्फ़ फ़ुल ऐप्लिकेशन मोड में चलाने के लिए मार्क करें. इस एनोटेशन को क्लास लेवल पर लागू करके, उसमें मौजूद सभी टेस्ट को बाहर रखा जा सकता है.

अगर इंस्टैंट ऐप्लिकेशन के लिए ऐक्सेस की जा सकने वाली कोई सुविधा काम नहीं कर रही है, तो जांच पूरी नहीं हो पाएगी. ऐसे में, बग की शिकायत करें.

समस्या का हल

अगर आपका टेस्ट DEVICE पर MyCtsModule.apk इंस्टॉल नहीं हो सका गड़बड़ी के साथ पूरा नहीं होता है, तो: वजह: '-116', लॉगकैट पर PackageManager के मैसेज देखें. उदाहरण के लिए, अगर आपको Full ऐप्लिकेशन को Instant ऐप्लिकेशन: your_app से बदला नहीं जा सकता मैसेज मिलता है, तो सबसे पहले adb का इस्तेमाल करके अपने ऐप्लिकेशन को अनइंस्टॉल करें.