عند تحميل حزمة APK، يجب أن تستوفي متطلبات مستوى واجهة برمجة التطبيقات المستهدَف على Google Play.
اعتبارًا من 31 أغسطس 2024:
- يجب أن تستهدف التطبيقات الجديدة وتحديثات التطبيقات الإصدار 14 من نظام التشغيل Android (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث لإرسالها إلى Google Play، باستثناء تطبيقات Wear OS وAndroid TV التي يجب أن تستهدف Android 13 (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث.
- يجب أن تستهدف التطبيقات الحالية الإصدار 13 من نظام التشغيل Android (المستوى 33 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث لكي تظل متاحة للمستخدمين الجدد على الأجهزة التي تعمل بنظام التشغيل Android أعلى من مستوى واجهة برمجة التطبيقات المستهدف في تطبيقك. بالنسبة إلى التطبيقات التي تستهدف الإصدار 12 من Android (المستوى 31 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم (Android 10 (المستوى 29) أو أقل لنظام التشغيل Wear OS وAndroid 11 (المستوى 30 لواجهة برمجة التطبيقات) أو أقل لأجهزة Android TV)، لن تتوفّر إلا على الأجهزة التي تعمل بنظام التشغيل Android والتي تتطابق مع مستوى واجهة برمجة التطبيقات المستهدَف في تطبيقك أو أقل منه.
ستتمكن من طلب تمديد الموعد النهائي حتى 1 تشرين الثاني (نوفمبر) 2024 إذا كنت بحاجة إلى مزيد من الوقت لتحديث تطبيقك. وستتمكّن من الوصول إلى استمارات طلب التمديد لتطبيقك من Play Console في وقت لاحق من هذا العام.
حالات مستثناة من هذه المتطلّبات:
- التطبيقات الخاصة بشكل دائم التي تقتصر على مستخدمين في مؤسسة معيَّنة والمخصَّصة للتوزيع الداخلي فقط.
- هي التطبيقات التي تستهدف نظام التشغيل Android Automotive، أو المضمّنة في حزمة APK تستهدف نظام التشغيل Android Automotive.
أهمية استهداف حِزم تطوير برامج (SDK) أحدث
يقدّم كل إصدار جديد من Android تغييرات لتحسين الأمان والأداء، وتحسين تجربة المستخدم على Android. لا تنطبق بعض هذه التغييرات
إلا على التطبيقات التي تقدّم بيانًا صريحًا عن دعمها من خلال سمة بيان targetSdkVersion
(المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).
عند ضبط تطبيقك لاستهداف مستوى حديث لواجهة برمجة التطبيقات، يضمن ذلك استفادة المستخدمين من هذه التحسينات، في حين لا يزال بإمكانك تشغيل تطبيقك على إصدارات قديمة من Android. يتيح أيضًا استهداف مستوى واجهة برمجة تطبيقات حديث لتطبيقك الاستفادة من أحدث ميزات النظام الأساسي لإرضاء المستخدمين. بالإضافة إلى ذلك، واعتبارًا من Android 10 (المستوى 29 لواجهة برمجة التطبيقات)، يظهر للمستخدمين تحذير عند بدء تشغيل تطبيق للمرة الأولى إذا كان التطبيق يستهدف الإصدار 5.1 من نظام التشغيل Android (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم.
يوضح هذا المستند النقاط المهمة التي يجب معرفتها أثناء تعديل مستوى واجهة برمجة التطبيقات المستهدَف لاستيفاء متطلبات Google Play. راجِع التعليمات في الأقسام التالية، بناءً على الإصدار الذي يتم النقل إليه.
نقل البيانات من نظام التشغيل Android 12 والإصدارات الأحدث (المستوى 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 التي ينشئها تطبيقك.
تجربة المستخدم
- الإشعارات المخصّصة: لن تستخدم الإشعارات ذات المشاهدات المخصّصة للمحتوى منطقة الإشعارات بالكامل بعد الآن، بل يطبّق النظام نموذجًا عاديًا بدلاً من ذلك. يضمن هذا النموذج أنّ الإشعارات المخصّصة لها زخارف
نفس الإشعارات الأخرى في جميع الولايات. وهذا السلوك مطابق تقريبًا لسلوك
Notification.DecoratedCustomViewStyle
. - تغييرات في عملية إثبات الملكية من خلال ميزة Android App Links: عند استخدام ميزة إثبات الملكية من خلال رابط تطبيق Android، تأكّد من أنّ فلاتر الأهداف تتضمّن الفئة BROWSABLE وأن تتوافق مع مخطط HTTPS.
الأداء
قيود إطلاق الخدمات التي تعمل في المقدّمة: لاستهداف الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، لا يمكن لتطبيقك بدء الخدمات التي تعمل في المقدّمة أثناء تشغيله في الخلفية، باستثناء بعض الحالات الخاصة. إذا حاول أحد التطبيقات بدء خدمة تعمل في المقدّمة أثناء تشغيله في الخلفية، سيحدث استثناء (باستثناء الحالات الخاصة القليلة).
يمكنك استخدام 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)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار Android 6.0 والإصدارات الأحدث من النظام الأساسي:
-
-
لا يتم منح الأذونات الخطيرة إلا في وقت التشغيل. يجب أن توفّر مسارات واجهة المستخدم خصائص لمنح هذه الأذونات.
-
تأكّد متى أمكن من استعداد تطبيقك للتعامل مع رفض طلبات الأذونات. على سبيل المثال، إذا رفض أحد المستخدمين طلبًا للوصول إلى نظام تحديد المواقع العالمي (GPS) في الجهاز، تأكَّد من توفّر طريقة أخرى لتطبيقك للمتابعة.
-
للحصول على قائمة شاملة بالتغييرات التي تم تقديمها في Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات)، يُرجى الاطّلاع على صفحة تغييرات السلوك الخاصة بهذا الإصدار من النظام الأساسي.
تابع باتّباع التعليمات الواردة في القسم التالي.
نقل البيانات إلى Android 7 (المستوى 24 من واجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 7.0 Android والإصدارات الأحدث من النظام الأساسي:
-
القيلولة وتطبيقات وضع الاستعداد
تصميم للسلوكيات الموضحة في تحسين القيلولة وتطبيقات وضع الاستعداد، والذي يشمل تغييرات إضافية تم تقديمها في العديد من إصدارات النظام الأساسي.
عندما يكون الجهاز في وضع القيلولة ووضع الاستعداد للتطبيقات، يتصرف النظام على النحو التالي:
- تقييد الوصول إلى الشبكة
- يمكن تأجيل المنبّهات والمزامنات والمهام
- تفرض قيودًا على عمليات البحث عن نظام تحديد المواقع العالمي (GPS) وشبكات Wi-Fi.
- تحظر هذه السياسة رسائل المراسلة عبر السحابة الإلكترونية من Firebase ذات الأولوية العادية.
-
تغييرات الأذونات
- يحظر النظام الوصول إلى الأدلة الخاصة للتطبيقات.
-
يؤدي عرض معرّف الموارد المنتظم (URI) "
file://
" خارج تطبيقك إلى تشغيلFileUriExposedException
. إذا كنت بحاجة إلى مشاركة الملفات خارج تطبيقك، نفِّذFileProvider
.
-
يحظر النظام الربط بمكتبات غير NDK.
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في الإصدار 7.0 من نظام التشغيل Android (المستوى 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 أو 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 من واجهة برمجة التطبيقات باتّباع التعليمات الواردة في القسم السابق.
تحديث تطبيقاتك
عند تحديث مستوى واجهة برمجة التطبيقات المستهدَف في تطبيقاتك، ننصحك باستخدام أحدث ميزات النظام الأساسي لتحديث تطبيقاتك وإرضاء المستخدمين.
- يمكنك استخدام الكاميراX المتاحة في الإصدار التجريبي للاستفادة إلى أقصى حدّ من الكاميرا.
- يمكنك استخدام مكوّنات 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
أصغر من أو يساوي الإصدار الرئيسي من Support Library. وننصحك بالتحديث إلى مكتبة دعم حديثة
للاستفادة من أحدث ميزات التوافق وإصلاحات الأخطاء.
اختبار تطبيقك
بعد تحديث مستوى واجهة برمجة التطبيقات لتطبيقك وميزاته حسب الاقتضاء، عليك اختبار بعض حالات الاستخدام الأساسية. الاقتراحات التالية ليست شاملة، ولكنها تهدف إلى توجيه عملية الاختبار الخاصة بك. نقترح عليك اختبار ما يلي:
- أنّ تطبيقك يجمع إلى واجهة برمجة التطبيقات 29 بدون أخطاء أو تحذيرات.
أنّ تطبيقك يتضمّن استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات ويطلب من المستخدم تقديم الأذونات. لإجراء ذلك:
- انتقِل إلى شاشة "معلومات التطبيق" في التطبيق وأوقِف كل إذن.
- افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
- نفِّذ اختبارات حالة الاستخدام الأساسية وتأكَّد من إعادة طلب الأذونات المطلوبة.
يعالج الجهاز "القيلولة" التي تعرض النتائج المتوقّعة وبدون أخطاء.
- باستخدام adb، ضع جهاز الاختبار في Doze أثناء تشغيل تطبيقك.
- اختبِر أي حالات استخدام تؤدي إلى إرسال رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أي حالات استخدام تستخدِم "المنبّهات" أو "الوظائف".
- تخلص من أي اعتماديات على الخدمات التي تعمل في الخلفية.
- ضبط تطبيقك في وضع الاستعداد للتطبيقات
- اختبِر أي حالات استخدام تؤدي إلى إرسال رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أي حالات استخدام تستخدِم "المنبّهات".
- باستخدام adb، ضع جهاز الاختبار في Doze أثناء تشغيل تطبيقك.
التعامل مع الصور أو الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المحظورة
ACTION_NEW_PICTURE
وACTION_NEW_VIDEO
عمليات البث بشكل صحيح (أي أنّه تم نقله إلى مهام Job Scheduler). - تأكَّد من أنّ أي حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال سارية.
- تأكَّد من أنّ تطبيقك يتعامل مع عمليات البث المحظورة
التعامل مع عمليات مشاركة الملفات مع تطبيقات أخرى - اختبار أي حالة استخدام تشارك بيانات الملف مع أي تطبيق آخر (حتى تطبيقًا آخر من مطوّر البرامج نفسه)
- اختبر المحتوى الذي يظهر في التطبيق الآخر بدون أن يؤدي ذلك إلى حدوث أعطال.
معلومات إضافية
عليك تفعيل خدمة تلقّي رسائل إلكترونية في Google Play Console لنتمكّن من إرسال آخر الأخبار والإشعارات المهمة إليك من Android وGoogle Play، بما في ذلك النشرة الإخبارية الشهرية للشركاء.