اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
CTS للتطبيقات الفورية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
التطبيقات الفورية هي ميزة رئيسية في الإصدار 10، لذا من الضروري أن تعمل
بشكل صحيح. يتم تثبيت التطبيقات الفورية بشكل ضمني، لذا تتوفّر لها مجموعة محدودة من
الإمكانات ويتم تشغيلها في بيئة آمنة أكثر تقييدًا. بسبب الطبيعة الواسعة النطاق
لهذه القيود، قد لا يعمل أي جزء من النظام بشكل صحيح مع التطبيقات
الفورية. يتم إنشاء مجموعة فرعية من اختبارات CTS لضمان أنّ السلوكيات المسموح بها من خلال ميزة "التطبيقات الفورية" تعمل بشكلٍ سليم. تتمثل الفكرة الرئيسية في تقليل حجم CTS من خلال عزل
الحد الأدنى من الاختبارات المطلوب نقلها. يعني تشغيل CTS في وضع التطبيقات الفورية
تثبيت حزمة APK الاختبارية كتطبيق فوري وإجراء الاختبارات.
قيود التطبيقات الفورية
لا يُثبِّت المستخدم التطبيقات الفورية، لذا يتم تشغيلها في مساحة محايدة مقيّدة بالقيود التالية:
- يمكن أن تتضمّن أذونات معيّنة فقط.
- لا يمكن رؤية التطبيقات الأخرى إلا إذا تم وضع علامة على هذه التطبيقات لتظهر في ميزة "التطبيقات الفورية".
- يمكن الوصول إلى إعدادات نظام معيّنة فقط.
- يمكن الوصول إلى خصائص نظام معيّنة فقط.
- لا يمكن عرض الخدمات أو مقدّمي الخدمات.
- يمكنها تلقّي الرسائل وإرسالها بقواعد خاصة حول البثّات.
بالإضافة إلى ذلك، يجب أن توافق تطبيقات Instant Apps على السماح لوضع الحماية للأمان الجديد بإضافة المزيد من
القيود. تؤثر هذه المجموعة الواسعة من السلوكيات الخاصة بالتطبيقات الفورية في
النظام الأساسي بأكمله، لذا يجب أن تتوفّر طريقة للتحقّق من أنّ التطبيقات الفورية تعمل على النحو المتوقّع على جميع
الأجهزة في المنظومة المتكاملة.
الاختبارات التي يتم إجراؤها في وضع "التطبيقات الفورية"
لا تتضمّن بعض وحدات CTS اختبارات تنطبق على التطبيقات الفورية. إذا كانت الوظيفة التي تختبرها
الوحدة تتفاعل مع خادم النظام، يجب إجراء هذه الاختبارات في
وضع "التطبيقات الفورية". على سبيل المثال، لا تتفاعل اختبارات OpenGL مع خادم النظام، وبالتالي
لا حاجة إلى تشغيلها في وضع "التطبيقات الفورية"، في حين تتفاعل اختبارات تسهيل الاستخدام مع
خادم النظام، ولكن يجب تشغيلها في وضع "التطبيقات الفورية".
بالإضافة إلى تحديد الوحدات التي تنطبق، على المستخدمين تحديد
الاختبارات ذات الصلة في هذه الوحدات. على سبيل المثال، لا ينطبق اختبار السلوكيات الخاصة بالخدمة
لبنية قابلة للتوصيل (مثل AccessibilityService) على وضع التطبيقات الفورية
لأنّ التطبيقات الفورية لا يمكنها عرض الخدمات للتطبيقات الأخرى (بما في ذلك النظام الأساسي)، في حين أنّ اختبارات
التحقّق من السلوكيات من جهة التطبيق تنطبق على وضع التطبيقات الفورية. ومن الأمثلة الأخرى الاختبار الذي يقيس صحة السلوكيات المرتبطة بإذن لا يمكن لتطبيق فوري الحصول عليه، ويكون غير ذي صلة في وضع التطبيقات الفورية. هناك مجموعة من الاختبارات التي تنطبق فقط على التطبيقات الفورية التي تتحقّق من قواعد
سلوكها، على سبيل المثال، عدم عرض الخدمات أو عدم ظهور التطبيقات الأخرى. وعادةً ما يكون
هذا النوع من التطبيقات مكتوبة ولا تتطلّب نقلها.
أخطاء الاختبار في وضع "التطبيقات الفورية"
إذا تعذّر اجتياز الاختبار لأنّه يتحقق من وظيفة لا يمكن للتطبيقات الفورية الوصول إليها، يعني ذلك أنّه
لا يمكن تطبيقه في وضع التطبيقات الفورية. ضَع علامة على الاختبار لتشغيله في وضع "التطبيق الكامل" فقط من خلال التعليق التوضيحي
باستخدام @AppModeFull
. يمكنك تطبيق هذا التعليق التوضيحي على مستوى الصف لاستبعاد كل
الاختبارات الواردة فيه.
إذا تعذّر إجراء الاختبار بسبب تعطُّل بعض الوظائف التي يمكن للتطبيقات الفورية الوصول إليها،
قدِّم بلاغًا عن خطأ.
تحديد المشاكل وحلّها
إذا تعذّر إكمال الاختبار وظهرت الرسالة تعذّر تثبيت MyCtsModule.apk على الجهاز. السبب: '-116'،
ابحث عن رسائل PackageManager في logcat. على سبيل المثال، إذا ظهرت الرسالة تعذّر استبدال التطبيق الكامل
بتطبيق فوري: your_app، سيؤدي ذلك إلى إلغاء تثبيت تطبيقك أولاً باستخدام adb.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# CTS for Instant Apps\n\nInstant Apps are a key feature of 10, so it's essential that they work\nproperly. Instant Apps are implicitly installed, so they have a restricted set of\ncapabilities and run in a more restrictive security sandbox. Due to the pervasive nature\nof these restrictions, any part of the system is at risk for not properly working with Instant\nApps. A CTS test subset is created to ensure that behaviors allowed by Instant Apps are\nworking. The key idea is to minimize the size growth of CTS by isolating the\nminimal set of tests to port. CTS running in Instant Apps mode means\ninstalling the test APK as an Instant App and running the tests.\n\nInstant App restrictions\n------------------------\n\n\nInstant Apps aren't installed by the user, so they run in a restricted sandbox with\nthe following restrictions:\n\n- Can hold only certain permissions.\n- Can't see other apps unless those apps are marked as visible to Instant Apps.\n- Can access only certain system settings.\n- Can access only certain system properties.\n- Can't expose services/providers.\n- Can receive and send with special rules around broadcasts.\n\n\nIn addition, Instant Apps have to opt in to allowing the new security sandbox to add more\nrestrictions. This wide range of special behaviors around Instant Apps cross cut\nthe entire platform, so there needs to be a way to validate that Instant Apps work as expected for all\ndevices in the ecosystem.\n\nTests running in Instant Apps mode\n----------------------------------\n\n\nNot all CTS modules have tests applicable to Instant Apps. If the functionality tested by\nthe module has interaction with the system server, then these tests should be run in the\nInstant Apps mode. For example, the OpenGL tests aren't interacting with the system server and so\nthere's no need to run them in Instant Apps mode while the accessibility tests interact with the\nsystem server but there is a need to run them in Instant Apps mode.\n\n\nIn addition to identifying which modules are applicable, users need to determine\nwhich tests in these modules are relevant. For example, testing service-specific behaviors for\na pluggable architecture (for example, AccessibilityService) isn't applicable for Instant App\nmode as Instant Apps can't expose services to other apps (including the platform) while tests\nvalidating app-side behaviors are applicable for Instant Apps mode. Another example is a test that\nvalidates behaviors behind a permission that an Instant App can't hold aren't relevant in Instant\nApp mode. There's a set of tests that apply only to Instant Apps that validate the rules around\nhow they behave, for example, not exposing services, or not seeing other apps. Typically,\nthese are already written and don't require porting.\n\nTest failures in Instant Apps mode\n----------------------------------\n\n\nIf the test is failing because it validates functionality that Instant Apps can't access, then it\nisn't applicable in Instant Apps mode. Mark the test to run only in Full App mode by annotating\nit with `@AppModeFull`. You can apply this annotation to the class level to exclude all\ntests in it.\n\n\nIf the test fails because some functionality accessible to Instant Apps is broken,\n[file a bug](/docs/setup/contribute/report-bugs).\n\nTroubleshooting\n---------------\n\n\nIf your test fails with *Failed to install MyCtsModule.apk on DEVICE. Reason: '-116'* ,\nlook for PackageManager messages on logcat. For example, if it says *Can't replace Full\nApp with Instant App: your_app*, then adb uninstall your app first."]]