عند تحميل حِزمة APK، يجب أن تستوفي متطلبات مستوى واجهة برمجة التطبيقات المستهدَف في Google Play.
اعتبارًا من 31 أغسطس 2025:
- يجب أن تستهدف التطبيقات الجديدة وتحديثات التطبيقات الإصدار Android 15 (المستوى 35 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لإرسالها إلى Google Play، باستثناء تطبيقات Wear OS وAndroid Automotive وAndroid TV التي يجب أن تستهدف الإصدار Android 14 (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث.
- يجب أن تستهدف التطبيقات الحالية الإصدار Android 14 (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لكي تبقى متاحة للمستخدمين الجُدد على الأجهزة التي تعمل بإصدار Android أحدث من مستوى واجهة برمجة التطبيقات المستهدف في تطبيقك. أمّا التطبيقات التي تستهدف Android 13 (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، بما في ذلك Android 12 (المستوى 31 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم المتوافقة مع نظامي التشغيل Wear OS وAndroid TV، فلن تكون متاحة إلا على الأجهزة التي تعمل بإصدار Android مماثل لمستوى واجهة برمجة التطبيقات المستهدف لتطبيقك أو أقدم منه.
يمكنك طلب تمديد الموعد النهائي حتى 1 نوفمبر 2025 إذا كنت بحاجة إلى مزيد من الوقت لتحديث تطبيقك، وسيتاح نموذج طلب التمديد لتطبيقك في Play Console في وقت لاحق من هذا العام.
تشمل الحالات المستثناة من هذه المتطلبات ما يلي:
- التطبيقات الخاصة بشكل دائم التي تقتصر على مستخدمين في مؤسسة معيَّنة والمخصَّصة للتوزيع الداخلي فقط
لماذا يجب استهداف حِزم SDK الأحدث؟
يقدّم كل إصدار جديد من Android تغييرات لتحسين الأمان والأداء وتعزيز تجربة المستخدم على Android. لا تنطبق بعض هذه التغييرات إلا على التطبيقات التي تحدّد صراحةً إمكانية التوافق من خلال targetSdkVersionسمة البيان (المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).
عند ضبط إعدادات تطبيقك لاستهداف مستوى حديث لواجهة برمجة التطبيقات، فإنّ ذلك يضمن استفادة المستخدمين من هذه التحسينات، مع السماح بتشغيل تطبيقك على إصدارات Android قديمة. يسمح استهداف مستوى حديث لواجهة برمجة التطبيقات أيضًا لتطبيقك بالاستفادة من أحدث الميزات في النظام الأساسي لإبهار المستخدمين. بالإضافة إلى ذلك، بدءًا من الإصدار 10 من نظام التشغيل Android (المستوى 29 لواجهة برمجة التطبيقات)، تظهر للمستخدمين رسالة تحذير عند تشغيل تطبيق للمرة الأولى إذا كان التطبيق يستهدف الإصدار 5.1 من نظام التشغيل Android (المستوى 22 لواجهة برمجة التطبيقات) أو إصدارًا أقدم.
يُبرز هذا المستند النقاط المهمة التي يجب معرفتها عند تعديل مستوى واجهة برمجة التطبيقات المستهدَف لاستيفاء متطلبات Google Play. راجِع التعليمات في الأقسام التالية، حسب الإصدار الذي تريد نقل البيانات إليه.
نقل البيانات من الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث (المستوى 31 لواجهة برمجة التطبيقات) إلى إصدار أحدث
لتحديث تطبيقك لاستهداف إصدار أحدث من Android، اتّبِع قائمة تغييرات السلوك ذات الصلة:
- تغييرات السلوك في Android 13
- تغييرات في سلوك نظام التشغيل Android 14
- التغييرات في سلوك Android 15
- التغييرات في سلوك Android 16
نقل البيانات من الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) إلى الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات)
الأمان والأذونات
- البلوتوث: يجب استبدال بيانات
BLUETOOTHوBLUETOOTH_ADMINبأذوناتBLUETOOTH_SCANأوBLUETOOTH_ADVERTISEأوBLUETOOTH_CONNECT. لم يعُد عليك تقديم طلبات للحصول على إذن وقت التشغيل لإجراء عمليات البلوتوث.LOCATION - الموقع الجغرافي: يمكن للمستخدمين أن يطلبوا من التطبيقات استرداد معلومات الموقع الجغرافي التقريبي فقط. يجب طلب إذن
ACCESS_COARSE_LOCATIONفي كل مرة تطلب فيهاACCESS_FINE_LOCATION.- فلاتر الأهداف: إذا كان تطبيقك يحتوي على أنشطة أو خدمات أو مستقبِلات بث تستخدم فلاتر الأهداف، عليك الإفصاح صراحةً عن السمة android:exported لهذه المكوّنات.
- الإسبات: قد يتم وضع التطبيقات في وضع الإسبات إذا لم يتم استخدامها لفترة من الوقت. في وضع الإسبات، تتم إعادة ضبط أذونات وقت التشغيل وذاكرة التخزين المؤقت لتطبيقك، ولا يمكنك تشغيل المهام أو التنبيهات. يمكنك الاطّلاع على حالة الإسبات في تطبيقك.
- قابلية تغيير رمز PendingIntent: يجب تحديد قابلية التغيّر لكل عنصر من عناصر PendingIntent ينشئه تطبيقك.
تجربة المستخدم
- الإشعارات المخصّصة: لن تستخدم الإشعارات التي تتضمّن طرق عرض محتوى مخصّصة مساحة الإشعارات الكاملة، بل سيطبّق النظام نموذجًا عاديًا. يضمن هذا النموذج أن تتضمّن الإشعارات المخصّصة
التنسيق نفسه الذي تتضمّنه الإشعارات الأخرى في جميع الحالات. وهذا السلوك مطابق تقريبًا لسلوك
Notification.DecoratedCustomViewStyle. - تغييرات في عملية التحقّق من "روابط التطبيقات" على Android: عند استخدام عملية التحقّق من "روابط التطبيقات" على Android، تأكَّد من أنّ تعبيرات intent filter تتضمّن الفئة BROWSABLE وتتوافق مع نظام HTTPS.
الأداء
قيود على تشغيل الخدمات التي تعمل في المقدّمة: لا يمكن لتطبيقك بدء تشغيل الخدمات التي تعمل في المقدّمة أثناء تشغيله في الخلفية إذا كان يستهدف الإصدار Android 12 أو الإصدارات الأحدث، باستثناء بعض الحالات الخاصة. إذا حاول أحد التطبيقات بدء خدمة تعمل في المقدّمة أثناء تشغيله في الخلفية، سيحدث استثناء (باستثناء بعض الحالات الخاصة).
ننصحك باستخدام WorkManager لجدولة العمل المعجّل وبدء تنفيذه أثناء تشغيل تطبيقك في الخلفية. لإكمال الإجراءات الحساسة للوقت التي يطلبها المستخدم، ابدأ الخدمات التي تعمل في المقدّمة ضمن منبّه دقيق.
قيود على إطلاق التطبيق من خلال الإشعارات: عندما ينقر المستخدمون على الإشعارات، تستجيب بعض التطبيقات من خلال تشغيل أحد مكونات التطبيق التي تبدأ النشاط الذي يراه المستخدم ويتفاعل معه. يُعرف مكوّن التطبيق هذا باسم "نافذة الإشعارات".
يجب ألا تبدأ التطبيقات الأنشطة من الخدمات أو أدوات استقبال البث التي يتم استخدامها كمنصات انطلاق للإشعارات. بعد أن ينقر المستخدم على إشعار أو زر إجراء داخل الإشعار، لا يمكن لتطبيقك استدعاء
startActivity()داخل خدمة أو أداة استقبال بث.
يمكنك الاطّلاع على المجموعة الكاملة من التغييرات التي تؤثّر في التطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 من واجهة برمجة التطبيقات).
نقل البيانات من إصدار أقدم من Android 11 (المستوى 30 لواجهة برمجة التطبيقات)
اختَر إصدار Android الذي سيتم نقل البيانات منه:
نقل البيانات إلى Android 5 (المستوى 21 لواجهة برمجة التطبيقات)
راجِع صفحة "التغييرات في السلوك" الخاصة بكل من الإصدارات التالية للتأكّد من أنّ تطبيقك قد أخذ في الاعتبار التغييرات التي تم تقديمها في هذه الإصدارات:
- Android 5.0 (المستوى 21 من واجهة برمجة التطبيقات)
- Android 4.4 (المستوى 19 من واجهة برمجة التطبيقات)
- Android 4.1.x (المستوى 16 من واجهة برمجة التطبيقات)
تابِع باتّباع التعليمات الواردة في القسم التالي.
نقل البيانات إلى الإصدار 6 من نظام التشغيل Android (المستوى 23 لواجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
-
لا يتم منح الأذونات الخطيرة إلا في وقت التشغيل. يجب أن توفّر مسارات واجهة المستخدم إمكانية منح هذه الأذونات.
-
احرص على إعداد تطبيقك للتعامل مع رفض طلبات الأذونات كلما أمكن ذلك. على سبيل المثال، إذا رفض المستخدم طلب الوصول إلى نظام تحديد المواقع العالمي (GPS) على الجهاز، تأكَّد من أنّ تطبيقك يوفّر طريقة أخرى للمتابعة.
-
للحصول على قائمة شاملة بالتغييرات التي تم إدخالها في الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات)، راجِع صفحة التغييرات في السلوك الخاصة بهذا الإصدار من النظام الأساسي.
تابِع باتّباع التعليمات الواردة في القسم التالي.
الانتقال إلى الإصدار 7 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
وضع "القيلولة" و"وضع الاستعداد للتطبيقات"
تصميم السلوكيات الموضّحة في التحسين من أجل ميزتَي "قيلولة" و"تطبيقات وضع الاستعداد"، والتي تشمل التغييرات التدريجية التي تم طرحها في عدة إصدارات من النظام الأساسي
عندما يكون الجهاز في "وضع قيلولة" و"وضع الاستعداد للتطبيقات"، يتصرف النظام على النحو التالي:
- يحظر الوصول إلى الشبكة
- تأجيل المنبّهات والمزامنة والمهام
- تقييد عمليات البحث عن شبكات Wi-Fi ونظام تحديد المواقع العالمي (GPS)
- يتم حظر الرسائل ذات الأولوية العادية من المراسلة عبر السحابة الإلكترونية من Firebase.
-
التغييرات في الأذونات
- يحظر النظام الوصول إلى الأدلة الخاصة بالتطبيقات.
-
يؤدي عرض عنوان URI
file://خارج تطبيقك إلى تشغيلFileUriExposedException. إذا كنت بحاجة إلى مشاركة ملفات خارج تطبيقك، عليك تنفيذFileProvider
-
يحظر النظام الربط بالمكتبات غير التابعة لمجموعة أدوات تطوير البرامج الأصلية (NDK).
للحصول على قائمة شاملة بالتغييرات التي تم إدخالها في Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات)، راجِع صفحة التغييرات في السلوك الخاصة بهذا الإصدار من النظام الأساسي.
تابِع باتّباع التعليمات الواردة في القسم التالي.
نقل البيانات إلى الإصدار 8 من نظام التشغيل Android (المستوى 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 لواجهة برمجة التطبيقات)
-
الإشعارات التي تتضمّن
نية العرض بملء الشاشة
-
يجب طلب الإذن العادي
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.
-
مساحة التخزين المحصورة
نقل البيانات من الإصدار 10 من نظام التشغيل Android (المستوى 29 لواجهة برمجة التطبيقات) إلى الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات)
-
الخصوصية
- فرض استخدام مساحة التخزين المحصورة : يجب أن تعتمد التطبيقات نموذج مساحة التخزين المحصورة الذي يتم فيه حفظ أنواع الملفات الخاصة بالتطبيقات والوسائط وغيرها من أنواع الملفات والوصول إليها باستخدام مواقع مخصّصة.
- إعادة ضبط الأذونات تلقائيًا: إذا لم يتفاعل المستخدمون مع تطبيق معيّن لبضعة أشهر، يعيد النظام ضبط أذونات التطبيق الحسّاسة تلقائيًا. من المفترض ألا يؤثّر ذلك في معظم التطبيقات. إذا كان تطبيقك يعمل في الخلفية بشكل أساسي بدون تفاعلات المستخدم، يمكنك أن تطلب من المستخدمين إيقاف ميزة إعادة الضبط التلقائي.
- الوصول إلى بيانات الموقع الجغرافي في الخلفية: يجب أن تطلب التطبيقات إذن الوصول إلى بيانات الموقع الجغرافي في المقدّمة وفي الخلفية بشكل منفصل. لا يمكن منح إذن الوصول إلى الموقع الجغرافي في الخلفية إلا من خلال إعدادات التطبيق بدلاً من مربّعات الحوار الخاصة بأذونات وقت التشغيل.
-
إذن الوصول إلى حِزم التطبيقات: عندما يطلب تطبيق الحصول على قائمة بالتطبيقات والخدمات المثبَّتة على الجهاز، يتم فلترة القائمة التي يتم عرضها.
- إذا كنت تستخدم خدمات تحويل النص إلى كلام أو التعرّف على الكلام، عليك إضافة عناصر طلبات البحث للخدمات إلى ملف البيان.
-
الأمان
- لم يعُد مسموحًا باستخدام ملفات `resource.arsc` المضغوطة
- الإصدار 2 من مخطّط توقيع حزمة APK مطلوب الآن. ولأسباب تتعلّق بالتوافق مع الأنظمة القديمة، على المطوّرين أيضًا مواصلة التوقيع باستخدام الإصدار 1 من مخطّط توقيع حزمة APK.
- قيود على الواجهات غير المتوفرة في حزمة SDK لا يُنصح باستخدام واجهات غير متوفرة في حزمة SDK للتطبيقات التي تستهدف المستوى 30 من واجهة برمجة التطبيقات، لأنّ بعض هذه الواجهات غير المتوفرة في حزمة SDK محظورة الآن. للحصول على قائمة شاملة بالواجهات غير المتوفرة في حزمة SDK والتي تم حظرها الآن في Android 11، يمكنك الاطّلاع على الواجهات غير المتوفرة في حزمة SDK والتي تم حظرها الآن في Android 11.
للحصول على قائمة شاملة بالتغييرات التي تم إدخالها في Android 11 (المستوى 30 لواجهة برمجة التطبيقات)، يُرجى الاطّلاع على صفحة التغييرات في السلوك.
يمكنك مواصلة التحديث إلى الإصدار 31 من واجهة برمجة التطبيقات باتّباع التعليمات الواردة في القسم السابق.
تطوير تطبيقاتك
عند تعديل مستوى واجهة برمجة التطبيقات المستهدَف لتطبيقاتك، ننصحك باستخدام أحدث ميزات النظام الأساسي لتحديث تطبيقاتك وإبهار المستخدمين.
- ننصحك باستخدام CameraX، وهي إصدار تجريبي، للاستفادة إلى أقصى حد من استخدام الكاميرا.
- استخدِم مكوّنات Jetpack لمساعدتك في اتّباع أفضل الممارسات، وتوفير الوقت الذي تستغرقه في كتابة الرموز النموذجية، وتسهيل المهام المعقّدة حتى تتمكّن من التركيز على الرموز البرمجية التي تهمّك.
- استخدِم Kotlin لكتابة تطبيقات أفضل بشكل أسرع وبعدد أقل من الرموز البرمجية.
- احرص على اتّباع متطلبات الخصوصية وأفضل الممارسات المتعلّقة بها.
- أضِف إمكانية استخدام المظهر الداكن إلى تطبيقاتك.
- أضِف إمكانية استخدام التنقّل بالإيماءات إلى تطبيقاتك.
- نقل بيانات تطبيقك من خدمة المراسلة عبر السحابة الإلكترونية من Google (GCM) إلى أحدث إصدار من خدمة المراسلة عبر السحابة الإلكترونية من Firebase
- الاستفادة من ميزة إدارة النوافذ المتقدّمة
- تتيح هذه السمة نسب عرض إلى ارتفاع أكبر (أكثر من 16:9) للاستفادة من التطورات الحديثة في الأجهزة. تأكَّد من تغيير حجم تطبيقك لملء مساحة الشاشة المتاحة. لا تحدّد الحدّ الأقصى لنسبة العرض إلى الارتفاع إلا كملاذ أخير. لمزيد من المعلومات حول نِسب العرض إلى الارتفاع القصوى، يُرجى الاطّلاع على تعريف دعم الشاشة المقيّد.
- أضِف إمكانية استخدام نوافذ متعدّدة لمساعدة تطبيقك في زيادة الإنتاجية وإدارة شاشات عرض متعدّدة.
- إذا كان توفير تجربة رائعة للتطبيق المصغّر سيؤدي إلى تحسين تجربة المستخدم،
أضِف ميزة نافذة ضمن النافذة.
- تحسين الأداء على الأجهزة التي تحتوي على فتحة عرض
- لا تفترض ارتفاع شريط الحالة. بدلاً من ذلك، استخدِم
WindowInsetsوView.OnApplyWindowInsetsListener. لمزيد من المعلومات، شاهِد فيديو مؤتمر droidcon في نيويورك لعام 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 أصغر من أو تساوي الإصدار الرئيسي من مكتبة الدعم. ننصحك بالتحديث إلى إصدار حديث ومتوافق من Support Library للاستفادة من أحدث ميزات التوافق وإصلاحات الأخطاء.
اختبار تطبيقك
بعد تعديل مستوى واجهة برمجة التطبيقات والميزات في تطبيقك حسب الاقتضاء، عليك اختبار بعض حالات الاستخدام الأساسية. الاقتراحات التالية ليست شاملة، ولكنها تهدف إلى توجيه عملية الاختبار. نقترح اختبار ما يلي:
- أن يتم تجميع تطبيقك إلى الإصدار 29 من واجهة برمجة التطبيقات بدون أخطاء أو تحذيرات
أنّ تطبيقك لديه استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات، وأنّه يطلب من المستخدم منح الأذونات. لإجراء ذلك:
- انتقِل إلى شاشة "معلومات التطبيق" الخاصة بتطبيقك، وأوقِف كل إذن.
- افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
- إجراء اختبارات لحالات الاستخدام الأساسية والتأكّد من إعادة طلب الأذونات المطلوبة
يتعامل مع ميزة "توفير البطارية" مع النتائج المتوقّعة وبدون أخطاء.
- باستخدام adb، ضَع جهاز الاختبار في وضع "السكون" أثناء تشغيل تطبيقك.
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أي حالات استخدام تستخدم المنبّهات أو المهام.
- التخلّص من أي تبعيات على الخدمات التي تعمل في الخلفية
- ضبط تطبيقك على وضع "استعداد التطبيق"
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أي حالات استخدام تستخدم المنبّهات.
- باستخدام adb، ضَع جهاز الاختبار في وضع "السكون" أثناء تشغيل تطبيقك.
التعامل مع الصور أو الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المقيدة
ACTION_NEW_PICTUREوACTION_NEW_VIDEOبشكل صحيح (أي تم نقلها إلى مهام JobScheduler). - تأكَّد من أنّ أي حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال تعمل.
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المقيدة
التعامل مع مشاركة الملفات مع تطبيقات أخرى - اختبار أي حالة استخدام تشارك بيانات الملفات مع أي تطبيق آخر (حتى تطبيق آخر من المطوّر نفسه)
- اختبِر ما إذا كان المحتوى يظهر في التطبيق الآخر ولا يؤدي إلى حدوث أعطال.
معلومات إضافية
اشترِك في خدمة تلقّي الرسائل الإلكترونية في Google Play Console حتى نتمكّن من إرسال آخر الأخبار والإشعارات المهمة من Android وGoogle Play إليك، بما في ذلك النشرة الإخبارية الشهرية للشركاء.