CTS للتطبيقات الفورية

تُعدّ التطبيقات الفورية إحدى الميزات الأساسية في الإصدار 10، لذا من الضروري أن تعمل بشكل سليم. يتم تثبيت "التطبيقات الفورية" بشكل ضِمني، لذا تتضمّن مجموعة محدودة من الإمكانات وتعمل في بيئة اختبار معزولة أكثر تقييدًا. ونظرًا إلى الطبيعة الشاملة لهذه القيود، فإنّ أي جزء من النظام معرّض لعدم العمل بشكل صحيح مع "التطبيقات الفورية". يتم إنشاء مجموعة فرعية من اختبارات CTS للتأكّد من أنّ السلوكيات التي تسمح بها التطبيقات الفورية تعمل بشكل صحيح. الفكرة الأساسية هي تقليل حجم مجموعة اختبارات التوافق من خلال عزل الحد الأدنى من مجموعة الاختبارات التي سيتم نقلها. يعني تشغيل مجموعة اختبار التوافق (CTS) في وضع "التطبيقات الفورية" تثبيت حزمة APK للاختبار كتطبيق فوري وتشغيل الاختبارات.

قيود التطبيقات الفورية

لا يثبّت المستخدم التطبيقات الفورية، لذا يتم تشغيلها في بيئة اختبار معزولة ومقيّدة تتضمّن القيود التالية:

  • يمكن أن تتضمّن أذونات معيّنة فقط.
  • لا يمكنك الاطّلاع على التطبيقات الأخرى إلا إذا تم وضع علامة عليها للإشارة إلى أنّها مرئية للتطبيقات الفورية.
  • يمكنه الوصول إلى إعدادات نظام معيّنة فقط.
  • يمكنه الوصول إلى بعض خصائص النظام فقط.
  • لا يمكن عرض الخدمات/مقدّمي الخدمات.
  • يمكنه تلقّي الرسائل وإرسالها مع تطبيق قواعد خاصة على عمليات البث.

بالإضافة إلى ذلك، يجب أن توافق "التطبيقات الفورية" على السماح لوضع الحماية الجديد للأمان بإضافة المزيد من القيود. تتداخل هذه المجموعة الواسعة من السلوكيات الخاصة بالتطبيقات الفورية مع المنصة بأكملها، لذا يجب توفير طريقة للتحقّق من أنّ التطبيقات الفورية تعمل على النحو المتوقّع على جميع الأجهزة في النظام المتكامل.

الاختبارات التي يتم إجراؤها في وضع "التطبيقات الفورية"

لا تحتوي جميع وحدات CTS على اختبارات تنطبق على "التطبيقات الفورية". إذا كانت الوظيفة التي يختبرها الوحدة النمطية تتضمّن تفاعلاً مع خادم النظام، يجب إجراء هذه الاختبارات في وضع "التطبيقات الفورية". على سبيل المثال، لا تتفاعل اختبارات OpenGL مع خادم النظام، وبالتالي لا حاجة إلى تشغيلها في وضع "التطبيقات الفورية"، بينما تتفاعل اختبارات تسهيل الاستخدام مع خادم النظام، وبالتالي يجب تشغيلها في وضع "التطبيقات الفورية".

بالإضافة إلى تحديد الوحدات التي تنطبق على حالتك، عليك تحديد الاختبارات ذات الصلة في هذه الوحدات. على سبيل المثال، لا ينطبق اختبار السلوكيات الخاصة بالخدمة على بنية قابلة للتوصيل (مثل AccessibilityService) في وضع "التطبيقات الفورية" لأنّ "التطبيقات الفورية" لا يمكنها عرض الخدمات للتطبيقات الأخرى (بما في ذلك النظام الأساسي)، بينما تنطبق الاختبارات التي تتحقّق من السلوكيات من جهة التطبيق على وضع "التطبيقات الفورية". مثال آخر هو اختبار يتحقّق من السلوكيات التي تتطلّب إذنًا لا يمكن للتطبيق الفوري الحصول عليه، وبالتالي لا صلة له بوضع التطبيق الفوري. هناك مجموعة من الاختبارات التي تنطبق فقط على "التطبيقات الفورية" وتتحقّق من صحة القواعد المتعلّقة بطريقة عملها، مثل عدم عرض الخدمات أو عدم رؤية التطبيقات الأخرى. عادةً، تكون هذه الملفات مكتوبة مسبقًا ولا تتطلّب نقلها.

أعطال الاختبار في وضع "التطبيقات الفورية"

إذا كان الاختبار يتعذّر إجراؤه لأنّه يتحقّق من وظائف لا يمكن للتطبيقات الفورية الوصول إليها، فهذا يعني أنّه لا ينطبق على وضع التطبيقات الفورية. ضَع علامة @AppModeFull على الاختبار لتشغيله في وضع "التطبيق الكامل" فقط. يمكنك تطبيق هذه التعليقات التوضيحية على مستوى الفئة لاستبعاد جميع الاختبارات فيها.

إذا تعذّر إجراء الاختبار بسبب تعطُّل بعض الوظائف التي يمكن الوصول إليها من خلال "التطبيقات الفورية"، يُرجى إبلاغنا عن الخطأ.

تحديد المشاكل وحلّها

إذا تعذّر إجراء الاختبار وظهرت الرسالة تعذّر تثبيت MyCtsModule.apk على الجهاز. السبب: "-116"، ابحث عن رسائل PackageManager في logcat. على سبيل المثال، إذا ظهرت الرسالة Can't replace Full App with Instant App: your_app، عليك أولاً إلغاء تثبيت تطبيقك باستخدام adb.