عند تحميل حزمة 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 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم (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. اطّلِع على التعليمات في الأقسام التالية، استنادًا إلى الإصدار الذي تريد نقل البيانات إليه.
نقل البيانات من الإصدار 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.
للاطّلاع على قائمة شاملة بالتغييرات التي تم إجراؤها في الإصدار 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 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 من واجهة برمجة التطبيقات باتّباع التعليمات الواردة في القسم السابق.
تحديث تطبيقاتك
عند تحديث مستوى واجهة برمجة التطبيقات المستهدَف في تطبيقاتك، ننصحك باستخدام أحدث ميزات النظام الأساسي لتحديث تطبيقاتك وإرضاء المستخدمين.
- يمكنك استخدام الكاميرا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، ضَع جهاز الاختبار في وضع "الاستراحة الذكية" أثناء تشغيل تطبيقك.
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أي حالات استخدام تستخدِم "المنبّهات" أو "الوظائف".
- تخلص من أي اعتمادات على الخدمات التي تعمل في الخلفية.
- ضبط تطبيقك في وضع الاستعداد للتطبيقات
- اختبِر أي حالات استخدام تؤدي إلى تشغيل رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أيّ حالات استخدام تستخدِم المنبّهات.
- باستخدام adb، ضَع جهاز الاختبار في وضع "الاستراحة الذكية" أثناء تشغيل تطبيقك.
معالجة الصور / الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يعالج عمليات البث
ACTION_NEW_PICTURE
وACTION_NEW_VIDEO
المحظورة بشكل صحيح (أي أنّه يتم نقلها إلى مهام JobScheduler). - تأكَّد من أنّ أيّ حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال تعمل بشكلٍ جيد.
- تأكَّد من أنّ تطبيقك يعالج عمليات البث
التعامل مع عمليات مشاركة الملفات مع تطبيقات أخرى - اختبار أي حالة استخدام تشارك بيانات الملف مع أي تطبيق آخر (حتى تطبيقًا آخر من مطوّر البرامج نفسه)
- اختبِر ما إذا كان المحتوى مرئيًا في التطبيق الآخر ولا يؤدي إلى تعطُّل التطبيق.
معلومات إضافية
فعِّل تلقّي الرسائل الإلكترونية في Google Play Console لنتمكّن من إرسال آخر الأخبار والإشعارات المهمة من Android وGoogle Play إليك، بما في ذلك النشرة الإخبارية الشهرية للشركاء.