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

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

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

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

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

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

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

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

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

झटपट ऐप्लिकेशन मोड में टेस्ट फ़ेल होना

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

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

समस्या का हल

अगर आपकी जांच में यह गड़बड़ी दिखती है: DEVICE पर MyCtsModule.apk इंस्टॉल नहीं हो सका. वजह: '-116', logcat पर PackageManager के मैसेज देखें. उदाहरण के लिए, अगर आपको यह मैसेज दिखता है: Can't replace Full App with Instant App: your_app, तो पहले adb uninstall your app का इस्तेमाल करके ऐप्लिकेशन को अनइंस्टॉल करें.