عند تحميل حزمة APK، يجب أن تستوفي متطلبات مستوى واجهة برمجة التطبيقات المستهدَف في Google Play.
اعتبارًا من 31 أغسطس 2026:
- يجب أن تستهدف التطبيقات الجديدة وتحديثات التطبيقات الإصدار Android 16 (المستوى 36 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لإرسالها إلى Google Play، باستثناء تطبيقات Wear OS وAndroid Automotive التي يجب أن تستهدف الإصدار Android 15 (المستوى 35 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، وتطبيقات Android TV وAndroid XR التي يجب أن تستهدف الإصدار Android 14 (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث.
- يجب أن تستهدف التطبيقات الحالية Android 15 (المستوى 35 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث لكي تبقى متاحة للمستخدمين الجُدد على الأجهزة التي تعمل بنظام التشغيل Android الأحدث من مستوى واجهة برمجة التطبيقات المستهدف في تطبيقك. بالنسبة إلى التطبيقات التي تستهدف الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، بما في ذلك الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم المتوافقة مع Wear OS وAndroid TV وAndroid XR، والإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم المتوافقة مع Android Automotive، فلن تكون متاحة إلا على الأجهزة التي تعمل بإصدار Android مماثل لمستوى واجهة برمجة التطبيقات المستهدف لتطبيقك أو أقدم منه.
إذا كنت بحاجة إلى وقت إضافي لتحديث تطبيقك، يمكنك طلب تمديد الموعد النهائي إلى 1 نوفمبر 2026. وستتوفّر استمارات طلب تمديد الموعد النهائي لتطبيقك في Play Console في وقت لاحق من هذا العام.
تتضمن الحالات المستثناة من هذه المتطلبات ما يلي:
- التطبيقات الخاصة بشكل دائم التي تقتصر على مستخدمين في مؤسسة معيَّنة والمخصَّصة للتوزيع الداخلي فقط
لماذا يجب استهداف حِزم SDK الأحدث؟
يقدّم كل إصدار جديد من Android تغييرات تهدف إلى تحسين الأمان والأداء
وتعزيز تجربة مستخدمي Android. لا تنطبق بعض هذه التغييرات إلا على التطبيقات التي تذكر صراحةً توافقها من خلال سمة البيان targetSdkVersion (المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).
عند ضبط إعدادات تطبيقك لاستهداف مستوى واجهة برمجة التطبيقات الحديث، فإنّ ذلك يضمن استفادة المستخدمين من هذه التحسينات، مع السماح بتشغيل التطبيق على إصدارات Android قديمة. يسمح استهداف مستوى واجهة برمجة التطبيقات الحديث لتطبيقك أيضًا بالاستفادة من أحدث ميزات النظام الأساسي لإرضاء المستخدمين. بالإضافة إلى ذلك، اعتبارًا من الإصدار Android 10 (المستوى 29 لواجهة برمجة التطبيقات)، يظهر للمستخدمين تحذير عند تشغيل تطبيق لأول مرة إذا كان التطبيق يستهدف الإصدار Android 5.1 (المستوى 22 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم.
يُبرز هذا المستند النقاط المهمة التي يجب معرفتها عند تحديث مستوى واجهة برمجة التطبيقات المستهدف لاستيفاء متطلبات Google Play. يمكنك الاطّلاع على التعليمات في الأقسام التالية، استنادًا إلى الإصدار الذي تريد نقل البيانات إليه.
نقل البيانات من الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث (المستوى 31 لواجهة برمجة التطبيقات) إلى إصدار أحدث
لتحديث تطبيقك لاستهداف إصدار أحدث من Android، يُرجى اتّباع قائمة التغييرات ذات الصلة في السلوك:
- تغييرات في سلوك Android 13
- تغييرات في سلوك Android 14
- التغييرات في سلوك Android 15
- التغييرات في سلوك Android 16
نقل البيانات من Android 11 (المستوى 30 لواجهة برمجة التطبيقات) إلى Android 12 (المستوى 31 لواجهة برمجة التطبيقات)
الأمان والأذونات
- بلوتوث: يجب استبدال بيانات الإذنَين
BLUETOOTHوBLUETOOTH_ADMINبالإذنBLUETOOTH_SCANأوBLUETOOTH_ADVERTISEأوBLUETOOTH_CONNECT. لم تعُد بحاجة إلى تقديم طلبات الحصول على إذن التشغيلLOCATIONلعمليات البلوتوث. - الموقع الجغرافي: يمكن للمستخدمين طلب استرداد معلومات الموقع الجغرافي التقريبي فقط من التطبيقات. يجب طلب إذن
ACCESS_COARSE_LOCATIONفي أي وقت تطلب فيهACCESS_FINE_LOCATION.- فلاتر الأهداف: إذا كان تطبيقك يحتوي على أنشطة أو خدمات أو مستقبِلات بث تستخدم فلاتر الأهداف، يجب أن تصرّح صراحةً عن السمة android:exported لهذه المكوّنات.
- الإسبات: قد يتم وضع التطبيقات في وضع الإسبات إذا لم يتم استخدامها لفترة زمنية معيّنة. في وضع الإسبات، تتم إعادة ضبط أذونات التشغيل وذاكرة التخزين المؤقت في تطبيقك، ولا يمكنك تشغيل المهام أو التنبيهات. يمكنك الاطّلاع على حالة الإسبات في تطبيقك.
- قابلية تغيُّر intent المؤجّلة: يجب تحديد قابلية تغيُّر كل عنصر من عناصر PendingIntent التي ينشئها تطبيقك.
تجربة المستخدم
- الإشعارات المخصّصة: لن تستخدم الإشعارات التي تتضمّن طرق عرض مخصّصة للمحتوى مساحة الإشعارات بالكامل، بل سيطبّق النظام نموذجًا عاديًا. يضمن هذا النموذج أن يكون للإشعارات المخصّصة
الزخرفة نفسها مثل الإشعارات الأخرى في جميع الحالات. هذا السلوك مطابق تقريبًا لسلوك
Notification.DecoratedCustomViewStyle. - تغييرات في عملية التحقّق من Android App Links: عند استخدام عملية التحقّق من Android App Link، تأكَّد من أنّ intent filters تتضمّن الفئة "قابلة للتصفّح" وتتوافق مع نظام HTTPS.
الأداء
تقييد إمكانية تشغيل الخدمات التي تعمل في المقدّمة: لاستهداف الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، لا يمكن لتطبيقك تشغيل الخدمات التي تعمل في المقدّمة أثناء تشغيله في الخلفية، باستثناء بعض الحالات الخاصة. إذا حاول أحد التطبيقات بدء خدمة تعمل في المقدّمة أثناء تشغيله في الخلفية، يحدث استثناء (باستثناء بعض الحالات الخاصة).
ننصحك باستخدام WorkManager لجدولة المهام المُعجَّلة وبدئها أثناء تشغيل تطبيقك في الخلفية. لإكمال الإجراءات الحسّاسة للوقت التي يطلبها المستخدم، ابدأ الخدمات التي تعمل في المقدّمة ضمن منبّه دقيق.
قيود الإشعارات المؤقتة: عندما ينقر المستخدمون على الإشعارات، تستجيب بعض التطبيقات من خلال تشغيل مكوّن تطبيق يبدأ النشاط الذي يراه المستخدم ويتفاعل معه. يُعرف مكوّن التطبيق هذا باسم "إشعار الترامبولين".
يجب ألا تبدأ التطبيقات أنشطة من الخدمات أو أجهزة استقبال البث التي يتم استخدامها كأدوات لتشغيل الإشعارات. بعد أن ينقر المستخدم على إشعار أو زر إجراء ضمن الإشعار، لا يمكن لتطبيقك استدعاء
startActivity()داخل خدمة أو مستقبِل بث.
يمكنك الاطّلاع على المجموعة الكاملة من التغييرات التي تؤثر في التطبيقات التي تستهدف Android 12 (المستوى 31 من واجهة برمجة التطبيقات).
نقل البيانات من إصدار أقدم من Android 11 (المستوى 30 من واجهة برمجة التطبيقات)
اختَر إصدار Android الذي ستنقل البيانات منه:
نقل البيانات إلى Android 5 (مستوى واجهة برمجة التطبيقات 21)
يُرجى الاطّلاع على صفحة "تغييرات السلوك" لكل إصدار من الإصدارات التالية للتأكّد من أنّ تطبيقك قد أخذ في الاعتبار التغييرات التي تم إدخالها في هذه الإصدارات:
- الإصدار 5.0 من نظام التشغيل Android (المستوى 21 من واجهة برمجة التطبيقات)
- الإصدار 4.4 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 19)
- الإصدار 4.1.x من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 16)
تابِع باتّباع التعليمات الواردة في القسم التالي.
الترحيل إلى Android 6 (مستوى واجهة برمجة التطبيقات 23)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
-
لا يتم منح الأذونات الخطيرة إلا في وقت التشغيل. يجب أن توفّر مسارات واجهة المستخدم إمكانات لمنح هذه الأذونات.
-
تأكَّد من أنّ تطبيقك جاهز للتعامل مع رفض طلبات الحصول على الأذونات كلما أمكن ذلك. على سبيل المثال، إذا رفض المستخدم طلبًا للوصول إلى نظام تحديد المواقع العالمي (GPS) في الجهاز، تأكَّد من أنّ تطبيقك يتضمّن طريقة أخرى للمتابعة.
-
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)، يُرجى الانتقال إلى صفحة التغييرات في السلوك لهذا الإصدار من النظام الأساسي.
تابِع باتّباع التعليمات الواردة في القسم التالي.
الانتقال إلى Android 7 (المستوى 24 من واجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
"وضع السكون" و"تطبيقات وضع الاستعداد"
صمِّم تطبيقك ليتوافق مع السلوكيات الموضّحة في مقالة التحسين لميزتَي "الاستراحة" و"تطبيقات وضع الاستعداد"، والتي تشمل التغييرات التدريجية التي تم إدخالها على مستوى إصدارات متعددة من المنصة.
عندما يكون الجهاز في وضعَي "قيلولة" و"تطبيقات وضع الاستعداد"، يتصرف النظام على النحو التالي:
- يتم حظر الوصول إلى الشبكة
- يؤجّل المنبّهات وعمليات المزامنة والمهام
- يفرض قيودًا على عمليات البحث عن شبكات Wi-Fi وإشارات GPS
- يفرض قيودًا على رسائل مراسلة Firebase السحابية ذات الأولوية العادية.
-
تغييرات الأذونات
- يحظر النظام الوصول إلى الأدلة الخاصة بالتطبيقات.
-
يؤدي الكشف عن معرّف موارد منتظم (URI) لـ
file://خارج تطبيقك إلى ظهورFileUriExposedException. إذا كنت بحاجة إلى مشاركة الملفات خارج تطبيقك، يمكنك تنفيذFileProvider
-
يحظر النظام الربط بمكتبات غير تابعة لمجموعة تطوير البرامج الأصلية (NDK).
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات)، يُرجى الانتقال إلى صفحة التغييرات في السلوك لهذا الإصدار من النظام الأساسي.
تابِع باتّباع التعليمات الواردة في القسم التالي.
نقل البيانات إلى Android 8 (مستوى واجهة برمجة التطبيقات 26)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 8.0 من Android والإصدارات الأحدث من النظام الأساسي:
-
الحدود القصوى للتنفيذ في الخلفية
-
يفرض النظام قيودًا على الخدمات للتطبيقات التي لا تعمل في المقدّمة.
-
startService()يعرض الآن استثناءً عندما يحاول تطبيق استدعاءه في حال حظرstartService(). -
لبدء الخدمات التي تعمل في المقدّمة، يجب أن يستخدم التطبيق
startForeground()وstartForegroundService(). - راجِع بعناية التغييرات التي تم إجراؤها على واجهة برمجة التطبيقات JobScheduler API، كما هو موضّح في صفحة التغييرات في السلوك لنظام التشغيل Android 8.0 (مستوى واجهة برمجة التطبيقات 26).
- تتطلّب خدمة مراسلة Firebase السحابية استخدام الإصدار 10.2.1 من حزمة تطوير البرامج (SDK) لخدمات Google Play أو إصدار أحدث.
- عند استخدام مراسلة Firebase السحابية، يخضع تسليم الرسائل لحدود التنفيذ في الخلفية. عندما يكون العمل في الخلفية ضروريًا عند استلام الرسالة، مثل إجراء مزامنة البيانات في الخلفية، يجب أن يجدول تطبيقك المهام باستخدام Firebase Job Dispatcher أو JobIntentService بدلاً من ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات مراسلة Firebase السحابية.
-
-
عمليات البث الضمني
-
يتم فرض قيود على عمليات البث الضمني. للحصول على معلومات حول معالجة الأحداث في الخلفية، يُرجى الاطّلاع على مستندات واجهة برمجة التطبيقات
JobScheduler.
-
يتم فرض قيود على عمليات البث الضمني. للحصول على معلومات حول معالجة الأحداث في الخلفية، يُرجى الاطّلاع على مستندات واجهة برمجة التطبيقات
-
حدود رصد الموقع الجغرافي في الخلفية
-
يكون وصول التطبيقات التي تعمل في الخلفية إلى بيانات الموقع الجغرافي محدودًا.
- على الأجهزة التي تتضمّن "خدمات Google Play"، استخدِم موفِّر الموقع المدمج للحصول على تحديثات دورية للموقع الجغرافي.
-
يكون وصول التطبيقات التي تعمل في الخلفية إلى بيانات الموقع الجغرافي محدودًا.
-
يفرض النظام قيودًا على الخدمات للتطبيقات التي لا تعمل في المقدّمة.
-
قنوات الإشعارات
- يجب تحديد سمات مقاطعة الإشعارات لكل قناة على حدة.
- يجب تخصيص الإشعارات لقناة معيّنة كي تظهر.
-
يتيح هذا الإصدار من المنصة استخدام
NotificationCompat.Builder.
-
الخصوصية
- يتم تحديد نطاق ANDROID_ID لكل مفتاح توقيع تطبيق.
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في الإصدار 8.0 من Android (مستوى واجهة برمجة التطبيقات 26)، يُرجى الانتقال إلى صفحة التغييرات في السلوك لهذا الإصدار من النظام الأساسي.
نقل البيانات من Android 8 (المستوى 26 من واجهة برمجة التطبيقات) إلى Android 9 (المستوى 28 من واجهة برمجة التطبيقات)
-
إدارة الطاقة
- توفّر مجموعات تطبيقات وضع الاستعداد قيودًا جديدة على الخلفية استنادًا إلى التفاعل مع التطبيق، مثل المهام المؤجَّلة والمنبّهات والحصص في الرسائل ذات الأولوية العالية
- تحسينات ميزة "توفير شحن البطارية" تزيد من القيود المفروضة على تطبيقات وضع الاستعداد
-
إذن الوصول إلى الخدمة التي تعمل في المقدّمة
- يجب طلب الإذن العادي
FOREGROUND_SERVICE(وليس إذن التشغيل)
- يجب طلب الإذن العادي
-
التغييرات في الخصوصية
- وصول محدود إلى أدوات الاستشعار في الخلفية
- تم حظر الوصول إلى سجلّات المكالمات، وهي الآن ضمن مجموعة أذونات
CALL_LOG - يتم حظر الوصول إلى أرقام الهواتف، ما يتطلّب
إذن
READ_CALL_LOG - الوصول المحدود إلى معلومات Wi-Fi
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في Android 9.0 (المستوى 28 لواجهة برمجة التطبيقات)، يُرجى الاطّلاع على التغييرات في السلوك.
الترحيل من Android 9 (مستوى واجهة برمجة التطبيقات 28) إلى Android 10 (مستوى واجهة برمجة التطبيقات 29)
-
الإشعارات
التي تتضمّن intent ملء الشاشة
-
يجب طلب الإذن العادي
USE_FULL_SCREEN_INTENT(وليس إذن التشغيل).
-
يجب طلب الإذن العادي
-
إتاحة استخدام الأجهزة القابلة للطي والأجهزة ذات الشاشات الكبيرة
-
يمكن الآن أن تكون أنشطة متعددة في حالة "استئناف" في الوقت نفسه، ولكن نشاطًا واحدًا فقط يكون في وضع التركيز.
-
يؤثر هذا التغيير في سلوك
onResume()وonPause(). -
مفهوم جديد لمراحل النشاط "الأعلى استئنافًا" يمكن رصده
من خلال الاشتراك في
onTopResumedActivityChanged().- يمكن أن يكون نشاط واحد فقط "مستأنفًا في أعلى الشاشة".
-
يؤثر هذا التغيير في سلوك
-
عند ضبط
resizeableActivityعلىfalse، يمكن للتطبيقات أيضًا تحديدminAspectRatioالذي يضيف تلقائيًا أشرطة سوداء إلى التطبيق في نِسب العرض إلى الارتفاع الأضيق.
-
يمكن الآن أن تكون أنشطة متعددة في حالة "استئناف" في الوقت نفسه، ولكن نشاطًا واحدًا فقط يكون في وضع التركيز.
-
التغييرات في الخصوصية
-
التخزين الفرعي
- يقتصر الوصول إلى مساحة التخزين الخارجية على دليل خاص بالتطبيق وأنواع معيّنة من الوسائط التي أنشأها التطبيق.
-
يتم حظر الوصول إلى الموقع الجغرافي عندما يكون التطبيق في الخلفية،
ويتطلّب ذلك
إذن
ACCESS_BACKGROUND_LOCATION. - فرض قيود على الوصول إلى المعرّفات غير القابلة لإعادة الضبط، مثل رقم IMEI والرقم التسلسلي
-
يتم فرض قيود على الوصول إلى معلومات النشاط البدني، مثل عدد خطوات المستخدم، ويتطلّب ذلك الحصول على إذن
ACTIVITY_RECOGNITION. -
تم تقييد الوصول إلى
بعض
واجهات برمجة التطبيقات الخاصة بالاتصالات الهاتفية والبلوتوث وWi-Fi، ما يتطلب
إذن
ACCESS_FINE_LOCATION. -
الوصول المحدود إلى إعدادات Wi-Fi
- لم يعُد بإمكان التطبيقات تفعيل Wi-Fi أو إيقافها مباشرةً، بل عليها إجراء ذلك باستخدام لوحات الإعدادات.
-
القيود المفروضة على بدء الاتصال بشبكة Wi-Fi،
والتي تتطلب استخدام
WifiNetworkSpecifierأوWifiNetworkSuggestion.
-
التخزين الفرعي
نقل البيانات من Android 10 (مستوى واجهة برمجة التطبيقات 29) إلى Android 11 (مستوى واجهة برمجة التطبيقات 30)
-
الخصوصية
- فرض استخدام نموذج "مساحة التخزين المُقسَّمة حسب التطبيقات" : يجب أن تتبنّى التطبيقات نموذج "مساحة التخزين المُقسَّمة حسب التطبيقات"، حيث يتم حفظ أنواع الملفات الخاصة بالتطبيق والوسائط وأنواع الملفات الأخرى والوصول إليها باستخدام مواقع مخصّصة.
- إعادة ضبط الأذونات تلقائيًا: إذا لم يتفاعل المستخدمون مع تطبيق معيّن لبضعة أشهر، يعيد النظام ضبط أذونات الوصول إلى المعلومات الحساسة في التطبيق تلقائيًا. من المفترض ألا يؤثر ذلك في معظم التطبيقات. إذا كان تطبيقك يعمل بشكل أساسي في الخلفية بدون تفاعلات من المستخدمين، يمكنك أن تطلب من المستخدمين إيقاف إعادة الضبط التلقائي.
- رصد الموقع الجغرافي في الخلفية: يجب أن تطلب التطبيقات إذن تحديد الموقع الجغرافي في المقدّمة والخلفية بشكل منفصل. لا يمكن منح إذن الوصول إلى الموقع الجغرافي في الخلفية إلا من خلال إعدادات التطبيق بدلاً من مربّعات حوار أذونات التشغيل.
-
إذن الوصول إلى الحِزم: عندما يطلب تطبيق
قائمة التطبيقات والخدمات المثبَّتة على الجهاز، تتم فلترة القائمة المعروضة.
- إذا كنت تستخدم خدمات تحويل النص إلى كلام أو التعرّف على الكلام، عليك إضافة عناصر طلبات البحث للخدمات إلى ملف البيان.
-
الأمان
- لم يعُد من الممكن استخدام ملفات `resource.arsc` المضغوطة
- الإصدار 2 من مخطّط توقيع حِزم APK مطلوب الآن. ولأسباب تتعلق بالتوافق مع الأنظمة القديمة، يجب أن يواصل المطوّرون أيضًا التوقيع باستخدام الإصدار الأول من "مخطط توقيع APK".
- قيود على الواجهات غير المضمّنة في حزمة تطوير البرامج (SDK) لا ننصح باستخدام الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) للتطبيقات التي تستهدف المستوى 30 لواجهة برمجة التطبيقات، لأنّ بعض هذه الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) محظورة الآن. يمكنك الاطّلاع على الواجهات غير المتوفّرة في حزمة SDK والمحظورة الآن في Android 11 للحصول على قائمة شاملة بالواجهات غير المتوفّرة في حزمة SDK والمحظورة.
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في Android 11 (المستوى 30 لواجهة برمجة التطبيقات)، يُرجى الانتقال إلى صفحة التغييرات في السلوك.
واصِل التحديث إلى المستوى 31 من واجهة برمجة التطبيقات باتّباع التعليمات الواردة في القسم السابق.
تحديث تطبيقاتك
عند تحديث مستوى واجهة برمجة التطبيقات المستهدَف لتطبيقاتك، ننصحك باستخدام ميزات النظام الأساسي الحديثة لتطوير تطبيقاتك وإرضاء المستخدمين.
- ننصحك باستخدام CameraX، وهو في الإصدار التجريبي، للاستفادة إلى أقصى حد من استخدام الكاميرا.
- استخدِم مكوّنات Jetpack لمساعدتك في اتّباع أفضل الممارسات، وتجنُّب كتابة الرموز البرمجية النموذجية، وتبسيط المهام المعقّدة، حتى تتمكّن من التركيز على الرموز البرمجية التي تهمّك.
- استخدِم Kotlin لكتابة تطبيقات أفضل بشكل أسرع وباستخدام رموز برمجية أقل.
- تأكَّد من اتّباع متطلبات الخصوصية وأفضل الممارسات.
- إضافة ميزة المظهر الداكن إلى تطبيقاتك
- أضِف ميزة التنقّل بالإيماءات إلى تطبيقاتك.
- انقل تطبيقك من خدمة المراسلة عبر السحابة الإلكترونية من Google (GCM) إلى أحدث إصدار من خدمة المراسلة عبر السحابة الإلكترونية من Firebase.
- استفِد من الإدارة المتقدّمة للنوافذ.
- يجب إتاحة نسب عرض إلى ارتفاع أكبر (أكثر من 16:9) للاستفادة من التطورات الحديثة في الأجهزة. تأكَّد من تغيير حجم تطبيقك لملء مساحة الشاشة المتاحة. لا تعلن عن حدّ أقصى لنسبة العرض إلى الارتفاع إلا كحلّ أخير. لمزيد من المعلومات حول الحد الأقصى لنسب العرض إلى الارتفاع، يُرجى الاطّلاع على الإعلان عن دعم الشاشة المقيَّدة.
- أضِف دعم النوافذ المتعددة لمساعدة تطبيقك في زيادة الإنتاجية، وإدارة شاشات متعددة.
- إذا كانت تجربة التطبيق المصغّر الرائعة ستؤدي إلى تحسين تجربة المستخدم،
يمكنك إضافة ميزة نافذة ضمن النافذة.
- تحسين الأداء للأجهزة التي تتضمّن صورة مقطوعة للشاشة
- لا تفترض ارتفاع شريط الحالة. بدلاً من ذلك، استخدِم
WindowInsetsوView.OnApplyWindowInsetsListener. لمزيد من المعلومات، يمكنك مشاهدة فيديو droidcon NYC 2017 للحصول على شرح. - لا تفترض أنّ التطبيق يشغل النافذة بأكملها. بدلاً من ذلك، يمكنك تأكيد موقعه الجغرافي باستخدام
View.getLocationInWindow()، وليسView.getLocationOnScreen(). * عند التعامل معMotionEvent، استخدِمMotionEvent.getX()وMotionEvent.getY()، وليسMotionEvent.getRawX()،MotionEvent.getRawY().
التحقّق من حزم تطوير البرامج (SDK) والمكتبات وتحديثها
تأكَّد من أنّ تبعيات حِزم تطوير البرامج (SDK) التابعة لجهات خارجية متوافقة مع المستوى 31 من واجهة برمجة التطبيقات: ينشر بعض مزوّدي حِزم تطوير البرامج (SDK) ذلك في ملف البيان، بينما يتطلّب البعض الآخر إجراء مزيد من التحقيق. إذا كنت تستخدم حزمة SDK لا تتوافق مع المستوى 31 من واجهة برمجة التطبيقات، عليك إعطاء الأولوية للتعاون مع موفّر حزمة SDK لحلّ المشكلة.
بالإضافة إلى ذلك، يُرجى العِلم أنّ targetSdkVersion في تطبيقك أو لعبتك قد يفرض قيودًا على
الوصول إلى مكتبات نظام Android الأساسي الخاصة. يُرجى الاطّلاع على ربط تطبيقات NDK بمكتبات
النظام الأساسي لمعرفة التفاصيل.
يجب أيضًا التحقّق من أي قيود قد تكون موجودة في إصدار "مكتبة دعم Android" الذي تستخدمه. وكالعادة، عليك التأكّد من التوافق بين رقم الإصدار الرئيسي من "مكتبة دعم Android" وcompileSdkVersion لتطبيقك.
ننصحك باختيار targetSdkVersion أصغر من أو يساوي رقم الإصدار الرئيسي لمكتبة الدعم. ننصحك بالتحديث إلى إصدار حديث متوافق من "مكتبة الدعم" للاستفادة من أحدث ميزات التوافق وإصلاحات الأخطاء.
اختبار تطبيقك
بعد تحديث مستوى واجهة برمجة التطبيقات وميزات تطبيقك حسب الاقتضاء، عليك اختبار بعض حالات الاستخدام الأساسية. الاقتراحات التالية ليست شاملة، ولكنّها تهدف إلى توجيه عملية الاختبار. ننصحك باختبار ما يلي:
- أن يتم تجميع تطبيقك في المستوى 29 من واجهة برمجة التطبيقات بدون أخطاء أو تحذيرات
أنّ تطبيقك يتضمّن استراتيجية للحالات التي يرفض فيها المستخدم طلبات الحصول على الأذونات، ويطلب من المستخدم الحصول على الأذونات لإجراء ذلك:
- انتقِل إلى شاشة "معلومات التطبيق" في تطبيقك، وأوقِف كل إذن.
- افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
- أجرِ اختبارات لحالات الاستخدام الأساسية وتأكَّد من إعادة طلب الأذونات المطلوبة.
يتعامل مع وضع "الاستراحة" بالنتائج المتوقعة وبدون أخطاء.
- باستخدام adb، يمكنك وضع جهازك الاختباري في وضع Doze أثناء تشغيل تطبيقك.
- اختبِر أي حالات استخدام تؤدي إلى ظهور رسائل "مراسلة Firebase السحابية".
- اختبِر أي حالات استخدام تستخدم المنبّهات أو المهام.
- تخلَّص من أي تبعيات على الخدمات التي تُشغَّل في الخلفية.
- ضبط تطبيقك على وضع "تطبيقات وضع الاستعداد"
- اختبِر أي حالات استخدام تؤدي إلى ظهور رسائل "مراسلة Firebase السحابية".
- اختبِر أي حالات استخدام تستخدم Alarms.
- باستخدام adb، يمكنك وضع جهازك الاختباري في وضع Doze أثناء تشغيل تطبيقك.
يتعامل مع الصور أو الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المقيَّدة
ACTION_NEW_PICTUREوACTION_NEW_VIDEOبشكل صحيح (أي تم نقله إلى وظائف JobScheduler). - تأكَّد من أنّ أي حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال تعمل.
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المقيَّدة
التعامل مع مشاركة الملفات مع تطبيقات أخرى - اختبِر أي حالة استخدام تشارك بيانات الملفات مع أي تطبيق آخر (حتى تطبيق آخر من المطوّر نفسه)
- اختبِر ظهور المحتوى في التطبيق الآخر وعدم حدوث أي أعطال.
معلومات إضافية
يمكنك الموافقة على تلقّي الرسائل الإلكترونية في Google Play Console لنتمكّن من إرسال آخر الأخبار والإشعارات المهمة من Android وGoogle Play، بما في ذلك النشرة الإخبارية الشهرية للشركاء.