عند تحميل حِزمة APK، يجب أن تستوفي متطلبات مستوى واجهة برمجة التطبيقات المستهدَف على Google Play.
بدايةً من 31 آب (أغسطس) 2023:
يجب أن تستهدف التطبيقات الجديدة 13 Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث باستثناء تطبيقات Wear OS التي يجب أن تستهدف إصدارًا يتراوح بين Android 11 (المستوى 30 لواجهة برمجة التطبيقات) وAndroid 13 (المستوى 33 لواجهة برمجة التطبيقات)، بشكل شامل.
يجب أن تستهدف تحديثات التطبيقات الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث وأن تتكيّف مع التغييرات في السلوك في الإصدار 13، باستثناء تطبيقات Wear OS التي يجب أن تستهدف الإصدار 11 من نظام التشغيل Android.
التطبيقات الخاصة بشكل دائم التي تقتصر على مستخدمين في مؤسسة معيّنة والمخصَّصة للتوزيع الداخلي فقط ليست مطلوبة لاستيفاء متطلبات مستوى واجهة برمجة التطبيقات المستهدَف.
ما هو الهدف من استهداف حِزم SDK أحدث؟
يقدّم كل إصدار جديد من Android تغييرات تساهم في تحسين الأمان والأداء وتحسين تجربة المستخدم. لا تسري بعض هذه التغييرات
إلا على التطبيقات التي تقدّم بيانًا صريحًا أنّها تدعمها من خلال سمة بيان targetSdkVersion
(المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).
عند ضبط تطبيقك لاستهداف مستوى حديث لواجهة برمجة التطبيقات، يمكن للمستخدمين الاستفادة من هذه التحسينات، بينما يظلّ تطبيقك يعمل على إصدارات قديمة من Android. يتيح أيضًا استهداف مستوى حديث لواجهة برمجة التطبيقات لتطبيقك الاستفادة من أحدث ميزات النظام الأساسي لإرضاء المستخدمين. بالإضافة إلى ذلك، اعتبارًا من Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، يظهر تحذير للمستخدمين عند تشغيل تطبيق لأول مرة إذا كان التطبيق يستهدف الإصدار Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم.
يوضّح هذا المستند النقاط المهمة التي يجب معرفتها بشأن تعديل مستوى واجهة برمجة التطبيقات المستهدَف لاستيفاء متطلبات Google Play. راجِع التعليمات الواردة في الأقسام التالية، بناءً على الإصدار الذي تريد النقل إليه.
نقل البيانات من Android 12 (المستوى 31) إلى Android 13 (المستوى 33)
لتحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل 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: عند استخدام التحقق من روابط تطبيقات 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 من واجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
-
ولا يتم منح الأذونات الخطيرة إلا في وقت التشغيل. يجب أن توفر تدفقات واجهة المستخدم الخصائص اللازمة لمنح هذه الأذونات.
-
يجب الحرص على أن يكون تطبيقك جاهزًا للتعامل مع رفض طلبات الأذونات، كلما أمكن ذلك. على سبيل المثال، إذا رفض المستخدم طلبًا للوصول إلى نظام تحديد المواقع العالمي (GPS) في الجهاز، تأكَّد من توفّر طريقة أخرى للمتابعة في تطبيقك.
-
للحصول على قائمة شاملة بالتغييرات التي تم إدخالها على الإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على صفحة تغييرات السلوك لهذا الإصدار من النظام الأساسي.
تابع من خلال اتّباع التعليمات الواردة في القسم التالي.
نقل البيانات إلى Android 7 (المستوى 24 من واجهة برمجة التطبيقات)
تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:
-
القيلولة وتطبيقات وضع الاستعداد
تصميم يتوافق مع السلوكيات الموضّحة في قسم تحسين القيلولة وتطبيقات وضع الاستعداد، والذي يشمل تغييرات متزايدة تم إدخالها على مستوى العديد من إصدارات الأنظمة الأساسية.
عندما يكون الجهاز في وضع "القيلولة" و"وضع الاستعداد للتطبيق"، يعمل النظام على النحو التالي:
- تقييد الوصول إلى الشبكة
- تأجيل المنبّهات والمزامنة والمهام
- فرض قيود على عمليات البحث باستخدام نظام تحديد المواقع العالمي (GPS) وشبكة Wi-Fi
- لحظر رسائل المراسلة عبر السحابة الإلكترونية من 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" أو JobIntentService بدلاً من ذلك. لمزيد من المعلومات، راجِع مستندات "المراسلة عبر السحابة الإلكترونية من Firebase".
-
يقدِّم
-
عمليات البث الضمنية
-
يتم حظر عمليات البث الضمنية. للحصول على معلومات عن التعامل مع الأحداث في الخلفية، يُرجى الاطّلاع على مستندات
JobScheduler
API.
-
يتم حظر عمليات البث الضمنية. للحصول على معلومات عن التعامل مع الأحداث في الخلفية، يُرجى الاطّلاع على مستندات
-
الحدود القصوى المسموح بها للمواقع الجغرافية في الخلفية
-
يمكن للتطبيقات التي تعمل في الخلفية الوصول بشكل محدود إلى بيانات الموقع الجغرافي.
- على الأجهزة التي تتضمن "خدمات Google Play"، استخدِم موفّر الموقع الجغرافي المدمج للحصول على تحديثات دورية للموقع الجغرافي.
-
يمكن للتطبيقات التي تعمل في الخلفية الوصول بشكل محدود إلى بيانات الموقع الجغرافي.
-
يحظر النظام الخدمات على التطبيقات التي لا تعمل في المقدّمة.
-
قنوات الإشعارات
- يجب تحديد خصائص مقاطعة الإشعارات لكل قناة على حدة.
- عليك ضبط إشعارات لقناة كي تظهر الإشعارات.
-
يتوافق هذا الإصدار من النظام الأساسي مع
NotificationCompat.Builder
.
-
الخصوصية
- يتم تحديد ANDROID_ID على مستوى كل مفتاح توقيع تطبيق.
للحصول على قائمة شاملة بالتغييرات التي تم إدخالها على نظام Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على صفحة تغييرات السلوك لهذا الإصدار من النظام الأساسي.
نقل البيانات من Android 8 (API 26) إلى Android 9 (API 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 باتّباع التعليمات الواردة في القسم السابق.
تحديث تطبيقاتك
أثناء تعديل مستوى واجهة برمجة التطبيقات المستهدَف لتطبيقاتك، ننصحك باعتماد أحدث ميزات النظام الأساسي لتحديث تطبيقاتك ولإرضاء المستخدمين.
- ننصحك باستخدام الكاميرا، التي هي تجريبية، لتحقيق أقصى استفادة من استخدام الكاميرا.
- استخدِم مكونات 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 Apps بمكتبات الأنظمة الأساسية لمعرفة التفاصيل.
يجب أيضًا التحقّق من أي قيود قد تكون متوفّرة في إصدار "مكتبة دعم Android" الذي تستخدمه. وكما هي الحال دائمًا، عليك التأكّد من التوافق بين الإصدار الرئيسي من Android Support Library وcompileSdkVersion
في تطبيقك.
ننصحك باختيار إصدار targetSdkVersion
أصغر من أو يساوي الإصدار الرئيسي لمكتبة الدعم. ننصحك بالتحديث إلى آخر إصدار متوافق مع "مكتبة الدعم" للاستفادة من أحدث ميزات التوافق وإصلاح الأخطاء.
اختبار تطبيقك
بعد تعديل مستوى واجهة برمجة التطبيقات في تطبيقك وميزاته حسب الحاجة، عليك اختبار بعض حالات الاستخدام الأساسية. الاقتراحات التالية ليست شاملة، ولكنها تهدف إلى توجيه عملية الاختبار. نقترح اختبار ما يلي:
- أن يجمّع تطبيقك وفق واجهة برمجة التطبيقات 29 بدون أخطاء أو تحذيرات.
أن تطبيقك يتّبع استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات ويطلب منها منحه الأذونات لإجراء ذلك:
- انتقِل إلى شاشة "معلومات التطبيق" في التطبيق وأوقف كل إذن.
- افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
- إجراء اختبارات حالة الاستخدام الأساسية والتأكد من طلب الأذونات المطلوبة مرة أخرى
يتعامل مع ميزة "القيلولة" مع النتائج المتوقعة وبدون أخطاء.
- باستخدام adb، ضَع جهاز الاختبار في Doze أثناء تشغيل تطبيقك.
- اختبار أي حالات استخدام تؤدي إلى ظهور رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- اختبِر أيّ حالات استخدام تستخدِم "المنبهات" أو "الوظائف".
- تخلص من أي تبعيات للخدمات التي تعمل في الخلفية.
- ضبط تطبيقك على وضع الاستعداد إلى حين تفعيله
- اختبار أي حالات استخدام تؤدي إلى ظهور رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
- يُرجى اختبار أي حالات استخدام تستخدِم المنبّهات.
- باستخدام adb، ضَع جهاز الاختبار في Doze أثناء تشغيل تطبيقك.
الأسماء المعرِّفة للصور أو الفيديوهات الجديدة التي يتم التقاطها
- تأكَّد من أنّ تطبيقك يعالج عمليات البث المحظورة
ACTION_NEW_PICTURE
وACTION_NEW_VIDEO
بشكل صحيح (أي تم نقله إلى مهام JobScheduler). - التأكد من أنّ أي حالات استخدام مهمة تعتمد على هذه الأحداث ستستمر في العمل.
- تأكَّد من أنّ تطبيقك يعالج عمليات البث المحظورة
التعامل مع مشاركة الملفات مع التطبيقات الأخرى: - يمكنك اختبار أي حالة استخدام تؤدي إلى مشاركة بيانات الملفات مع أي تطبيق آخر (حتى تطبيق آخر من مطوّر البرامج نفسه).
- اختبِر المحتوى في التطبيق الآخر ولا يؤدي إلى حدوث أي أعطال.
معلومات إضافية
تفعيل ميزة تلقّي الرسائل الإلكترونية في Google Play Console كي نتمكّن من إرسال إليك آخر الأخبار والإشعارات المهمة من Android وGoogle Play، بما في ذلك النشرة الإخبارية الشهرية للشركاء.