عند تحميل حزمة APK، يجب أن تستوفي حزمة APK متطلّبات مستوى واجهة برمجة التطبيقات المستهدَف في Google Play.
اعتبارًا من 31 أغسطس 2024:
- يجب أن تستهدف التطبيقات الجديدة وتحديثات التطبيقات الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لإرسالها إلى Google Play، باستثناء تطبيقات Wear OS وAndroid TV التي يجب أن تستهدف الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث.
- يجب أن تستهدف التطبيقات الحالية الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لكي تبقى متوفّرة للمستخدمين الجُدد على الأجهزة التي تعمل بإصدار من نظام التشغيل Android أحدث من مستوى واجهة برمجة التطبيقات المستهدَف في تطبيقك. بالنسبة إلى التطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) أو أقدم (الإصدار 10 من نظام التشغيل Android (المستوى 29 لواجهة برمجة التطبيقات) أو أقدم لنظام التشغيل Wear OS والإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو أقدم لنظام التشغيل Android TV)، فإنّها لن تتوفر إلا على الأجهزة التي تعمل بإصدار Android مماثل لمستوى واجهة برمجة التطبيقات المستهدَف في تطبيقاتك أو أقدم منه.
يمكنك طلب تمديد الموعد النهائي حتى 1 نوفمبر 2024 إذا كنت بحاجة إلى مزيد من الوقت لتحديث تطبيقك. وسيتاح نموذج طلب التمديد لتطبيقك في Play Console في وقت لاحق من هذا العام.
تشمل الاستثناءات من هذه المتطلبات ما يلي:
- التطبيقات الخاصة بشكل دائم التي تقتصر على مستخدمين في مؤسسة معيَّنة والمخصَّصة للتوزيع الداخلي فقط
- التطبيقات التي تستهدف نظام التشغيل Android Automotive أو تكون مضمَّنة مع حِزم APK التي تستهدف نظام التشغيل Android Automotive
ما أهمية استهداف حِزم SDK الأحدث؟
يقدّم كل إصدار جديد من Android تغييرات لتحسين أمان النظام وأداءه، فضلاً عن تحسين تجربة المستخدم. لا تنطبق بعض هذه التغييرات إلا
على التطبيقات التي تذكر توافقها صراحةً من خلال سمة targetSdkVersion
بيانها (المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).
عند ضبط إعدادات تطبيقك لاستهداف مستوى حديث من واجهة برمجة التطبيقات، فإنّ ذلك يضمن استفادة المستخدمين من هذه التحسينات، مع السماح بتشغيل التطبيق على إصدارات قديمة من Android. ويسمح استهداف مستوى حديث لواجهة برمجة التطبيقات أيضًا لتطبيقك بالاستفادة من أحدث ميزات النظام الأساسي لإرضاء المستخدمين. بالإضافة إلى ذلك، اعتبارًا من الإصدار Android 10 (المستوى 29 لواجهة برمجة التطبيقات)، يرى المستخدمون تحذيرًا عند تشغيل تطبيق للمرة الأولى إذا كان التطبيق يستهدف الإصدار 5.1 من Android (المستوى 22 لواجهة برمجة التطبيقات) أو إصدارًا أقدم.
يسلّط هذا المستند الضوء على النقاط المهمة التي يجب معرفتها عند تعديل مستوى واجهة برمجة التطبيقات المستهدَف لاستيفاء متطلّبات Google Play. اطّلِع على التعليمات في الأقسام التالية، استنادًا إلى الإصدار الذي تريد نقل البيانات إليه.
نقل البيانات من الإصدار 12 من Android والإصدارات الأحدث (المستوى 31 لواجهة برمجة التطبيقات) إلى إصدار أحدث
لتحديث تطبيقك لاستهداف إصدار أحدث من Android، اتّبِع قائمة التغييرات ذات الصلة بالسلوك:
نقل البيانات من Android 11 (المستوى 30 لواجهة برمجة التطبيقات) إلى Android 12 (المستوى 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، تأكَّد من أنّ فلاتر الأهداف تتضمّن الفئة 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 من واجهة برمجة التطبيقات)
تابِع الخطوات الواردة في القسم التالي.
نقل البيانات إلى 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 لكل مفتاح توقيع تطبيق.
للحصول على قائمة شاملة بالتغييرات التي تمّ إجراؤها في Android 8.0 (المستوى 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
-
مساحة التخزين على مستوى النطاق
نقل البيانات من Android 10 (المستوى 29 لواجهة برمجة التطبيقات) إلى Android 11 (المستوى 30 لواجهة برمجة التطبيقات)
-
الخصوصية
- فرض مساحة التخزين المخصّصة : يجب أن تتّبع التطبيقات نموذج مساحة التخزين المخصّصة الذي يتم من خلاله حفظ أنواع الملفات الخاصة بالتطبيق والوسائط وغيرها والوصول إليها باستخدام مواقع مخصّصة.
- إعادة ضبط الأذونات تلقائيًا: إذا لم يتفاعل المستخدمون مع أحد التطبيقات لعدة أشهر، يعيد النظام تلقائيًا ضبط أذونات التطبيق الحسّاسة. من المفترض ألا يؤثر ذلك في معظم التطبيقات. إذا كان تطبيقك يعمل بشكل أساسي في الخلفية بدون تفاعلات المستخدمين، يمكنك التفكير في طلب من المستخدمين إيقاف ميزة إعادة الضبط التلقائي.
- الوصول إلى الموقع الجغرافي في الخلفية: على التطبيقات طلب إذن الوصول إلى الموقع الجغرافي في المقدّمة والخلفية بشكل منفصل. لا يمكن منح إذن الوصول إلى الموقع الجغرافي في الخلفية إلا في إعدادات التطبيق بدلاً من مربّعات حوار أذونات وقت التشغيل.
-
مستوى رؤية الحزمة: عندما يطلب أحد التطبيقات
قائمة التطبيقات والخدمات المثبَّتة على الجهاز، يتم فلترة القائمة المعروضة.
- إذا كنت تستخدِم خدمات تحويل النص إلى كلام أو التعرّف على الكلام، عليك إضافة عناصر طلبات البحث للخدمات إلى ملف البيان.
-
الأمان
- لم تعُد ملفات resource.arsc المضغوطة متوافقة
- الإصدار 2 من مخطّط توقيع حِزم APK مطلوب الآن. لأسباب تتعلّق بالتوافق مع الإصدارات القديمة، على المطوّرين أيضًا مواصلة التوقيع باستخدام الإصدار 1 من مخطّط توقيع حِزم 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 Support Library وcompileSdkVersion
التطبيق.
ننصحك باختيار targetSdkVersion
أصغر من أو يساوي الإصدار الرئيسي لملف "مكتبة الدعم". ننصحك بالتحديث إلى أحدث مكتبة دعم متوافقة للاستفادة من أحدث ميزات التوافق وإصلاحات الأخطاء.
اختبار تطبيقك
بعد تعديل مستوى واجهة برمجة التطبيقات والميزات في تطبيقك حسب الاقتضاء، عليك اختبار بعض حالات الاستخدام الأساسية. إنّ الاقتراحات التالية ليست شاملة، ولكنّها تهدف إلى توجيه عملية الاختبار. ننصحك باختبار ما يلي:
- أنّه يتم تجميع تطبيقك باستخدام واجهة برمجة التطبيقات 29 بدون أخطاء أو تحذيرات
أنّ تطبيقك لديه استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات ويطلب من المستخدم منح الأذونات لإجراء ذلك:
- انتقِل إلى شاشة "معلومات التطبيق" في تطبيقك وأوقِف كل إذن.
- افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
- عليك إجراء اختبارات حالات الاستخدام الأساسية والتأكّد من أنّه تتم إعادة طلب الأذونات المطلوبة.
يعالج وضع "الاستراحة" بالنتائج المتوقّعة وبدون أخطاء.
- باستخدام adb، ضَع جهاز الاختبار في وضع "الاستراحة الذكية" أثناء تشغيل تطبيقك.
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أيّ حالات استخدام تستخدِم المنبّهات أو المهام.
- تجنَّب أي تبعيات على الخدمات التي تعمل في الخلفية.
- ضبط تطبيقك على وضع "الاستعداد"
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أيّ حالات استخدام تستخدِم المنبّهات.
- باستخدام adb، ضَع جهاز الاختبار في وضع "الاستراحة الذكية" أثناء تشغيل تطبيقك.
معالجة الصور / الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يعالج عمليات البث
ACTION_NEW_PICTURE
وACTION_NEW_VIDEO
المحظورة بشكل صحيح (أي أنّه يتم نقلها إلى مهام JobScheduler). - تأكَّد من أنّ أيّ حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال تعمل بشكلٍ جيد.
- تأكَّد من أنّ تطبيقك يعالج عمليات البث
معالجة مشاركة الملفات مع تطبيقات أخرى - اختبار أي حالة استخدام تشارك بيانات الملفات مع أي تطبيق آخر (حتى تطبيق آخر من المطوِّر نفسه)
- اختبِر ظهور المحتوى في التطبيق الآخر وعدم تسبُّبه في تعطُّل التطبيق.
معلومات إضافية
فعِّل تلقّي الرسائل الإلكترونية في Google Play Console لنتمكّن من إرسال آخر الأخبار والإشعارات المهمة من Android وGoogle Play إليك، بما في ذلك النشرة الإخبارية الشهرية للشركاء.