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

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

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

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

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

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

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

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

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

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

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

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

समस्या का हल

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