التطبيقات الفورية هي ميزة أساسية في Android 10، لذا من الضروري أن تعمل بشكل صحيح. يتم تثبيت التطبيقات الفورية ضمنيًا، لذا لديها مجموعة محدودة من الإمكانات وتعمل في بيئة حماية أكثر تقييدًا. بسبب الطبيعة الشاملة لهذه القيود، يكون أي جزء من النظام عرضة لعدم العمل بشكل صحيح مع التطبيقات الفورية. يتم إنشاء مجموعة فرعية من اختبارات CTS لضمان عمل السلوكيات المسموح بها في التطبيقات الفورية. الفكرة الأساسية هي تقليل نمو حجم CTS عن طريق عزل الحد الأدنى من مجموعة الاختبارات التي يجب نقلها. يعني تشغيل CTS في وضع "التطبيقات الفورية" تثبيت ملف APK للاختبار كتطبيق فوري وتشغيل الاختبارات.
قيود التطبيقات الفورية
لا يثبّت المستخدمون التطبيقات الفورية، لذا تعمل في بيئة حماية مقيّدة مع القيود التالية:
- لا يمكنها الاحتفاظ إلا بأذونات معيّنة.
- لا يمكنها الاطّلاع على التطبيقات الأخرى ما لم يتم وضع علامة عليها بأنّها مرئية للتطبيقات الفورية.
- لا يمكنها الوصول إلا إلى إعدادات نظام معيّنة.
- لا يمكنها الوصول إلا إلى خصائص نظام معيّنة.
- لا يمكنها عرض الخدمات أو مقدّمي الخدمات.
- يمكنها تلقّي الرسائل وإرسالها باستخدام قواعد خاصة حول عمليات البث.
بالإضافة إلى ذلك، يجب أن توافق التطبيقات الفورية على السماح لبيئة الحماية الجديدة بإضافة المزيد من القيود. تؤثر هذه المجموعة الواسعة من السلوكيات الخاصة بالتطبيقات الفورية في النظام الأساسي بأكمله، لذا يجب أن تكون هناك طريقة للتحقّق من أنّ التطبيقات الفورية تعمل على النحو المتوقّع على جميع الأجهزة في النظام.
الاختبارات التي يتم تشغيلها في وضع "التطبيقات الفورية"
لا تحتوي جميع وحدات CTS على اختبارات تنطبق على التطبيقات الفورية. إذا كانت الوظيفة التي تختبرها الوحدة تتفاعل مع خادم النظام، يجب تشغيل هذه الاختبارات في وضع "التطبيقات الفورية". على سبيل المثال، لا تتفاعل اختبارات OpenGL مع خادم النظام، لذا ليس من الضروري تشغيلها في وضع "التطبيقات الفورية"، بينما تتفاعل اختبارات تسهيل الاستخدام مع خادم النظام، لذا من الضروري تشغيلها في وضع "التطبيقات الفورية".
بالإضافة إلى تحديد الوحدات التي تنطبق على التطبيقات الفورية، على المستخدمين تحديد الاختبارات ذات الصلة في هذه الوحدات. على سبيل المثال، لا ينطبق اختبار السلوكيات الخاصة بالخدمة لهندسة معمارية قابلة للتوصيل (مثل AccessibilityService) على وضع "التطبيقات الفورية" لأنّه لا يمكن للتطبيقات الفورية عرض الخدمات لتطبيقات أخرى (بما في ذلك النظام الأساسي)، بينما تنطبق الاختبارات التي تتحقّق من السلوكيات على جانب التطبيق على وضع "التطبيقات الفورية". مثال آخر هو اختبار يتحقّق من السلوكيات التي تتطلّب إذنًا لا يمكن للتطبيق الفوري الاحتفاظ به، لذا لا يكون هذا الاختبار ذا صلة في وضع "التطبيقات الفورية". هناك مجموعة من الاختبارات التي تنطبق على التطبيقات الفورية فقط والتي تتحقّق من القواعد المتعلّقة بكيفية عملها، مثلاً عدم عرض الخدمات أو عدم الاطّلاع على التطبيقات الأخرى. عادةً ما تكون هذه الاختبارات مكتوبة مسبقًا ولا تتطلّب النقل.
حالات تعذُّر الاختبار في وضع "التطبيقات الفورية"
إذا تعذّر الاختبار لأنّه يتحقّق من وظيفة لا يمكن للتطبيقات الفورية الوصول إليها، لن يكون هذا الاختبار قابلاً للتطبيق في وضع "التطبيقات الفورية". ضَع علامة على الاختبار لتشغيله في وضع "التطبيق الكامل" فقط عن طريق إضافة التعليق التوضيحي @AppModeFull إليه. يمكنك تطبيق هذا التعليق التوضيحي على مستوى الفئة لاستبعاد جميع الاختبارات فيها.
إذا تعذّر الاختبار لأنّ بعض الوظائف التي يمكن للتطبيقات الفورية الوصول إليها معطّلة، عليك الإبلاغ عن خطأ.
تحديد المشاكل وحلّها
إذا تعذّر الاختبار وظهرت الرسالة تعذّر تثبيت MyCtsModule.apk على الجهاز. السبب: -116، ابحث عن رسائل PackageManager في logcat. على سبيل المثال، إذا ظهرت الرسالة لا يمكن استبدال التطبيق الكامل بالتطبيق الفوري: your_app، عليك أولاً إلغاء تثبيت تطبيقك باستخدام الأمر adb uninstall.