استيفاء متطلبات مستوى واجهة برمجة التطبيقات المستهدف في Google Play

عند تحميل حِزمة APK، يجب أن تستوفي متطلبات مستوى واجهة برمجة التطبيقات المستهدَف على Google Play.

بدايةً من 31 آب (أغسطس) 2023:

  • يجب أن تستهدف التطبيقات الجديدة Android 13 (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث باستثناء تطبيقات Wear OS التي يجب أن تستهدف إصدارًا يتراوح بين Android 11 (المستوى 30) وAndroid 13 (المستوى 33 لواجهة برمجة التطبيقات).

  • يجب أن تستهدف تحديثات التطبيقات الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث وأن تتكيّف مع التغييرات السلوكية في الإصدار 13 من نظام التشغيل Android، باستثناء تطبيقات Wear OS التي يجب أن تستهدف نظام التشغيل Android 11.

التطبيقات الخاصة بشكل دائم، التي تقتصر على مستخدمين في مؤسسة معيّنة والمخصّصة للتوزيع الداخلي فقط، ليست مطلوبة لاستيفاء متطلبات مستوى واجهة برمجة التطبيقات المستهدَف.

ملاحظة: اعتبارًا من العام 2022، لن تتوفّر بعض التطبيقات القديمة للمستخدمين الجُدد على الأجهزة التي تعمل بإصدارات أحدث من Android.

ما هو الهدف من استهداف حِزم SDK أحدث؟

يقدّم كل إصدار جديد من Android تغييرات تساهم في تحسين الأمان والأداء وتحسين تجربة المستخدم. لا تسري بعض هذه التغييرات إلا على التطبيقات التي تقدّم بيانًا صريحًا أنّها تدعمها من خلال سمة البيان targetSdkVersion (المعروفة أيضًا باسم مستوى واجهة برمجة التطبيقات المستهدَف).

عند ضبط تطبيقك لاستهداف مستوى حديث لواجهة برمجة التطبيقات، يضمن ذلك استفادة المستخدمين من هذه التحسينات، بينما يظلّ بالإمكان تشغيل تطبيقك على إصدارات قديمة من Android. يتيح أيضًا استهداف مستوى حديث لواجهة برمجة التطبيقات لتطبيقك الاستفادة من أحدث ميزات النظام الأساسي لإرضاء المستخدمين. بالإضافة إلى ذلك، اعتبارًا من Android 10 (المستوى 29 من واجهة برمجة التطبيقات)، يظهر تحذير للمستخدمين عند تشغيل تطبيق للمرة الأولى إذا كان التطبيق يستهدف الإصدار Android 5.1 (المستوى 22 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم.

يوضّح هذا المستند النقاط المهمة التي يجب معرفتها بشأن تعديل مستوى واجهة برمجة التطبيقات المستهدَف لاستيفاء متطلبات Google Play.

وعند الانتقال من الإصدارات الأقدم، يُرجى الاطّلاع على قائمة التغييرات الكاملة أدناه.

ملاحظة: إذا كان ملف Gradle يحتوي على إدخالات البيان، يمكنك تأكيد القيمة الحالية لـ targetSdkVersion أو تغييرها في ملف Gradle لتطبيقك، كما هو موضَّح في ضبط الإصدار. بدلاً من ذلك، يمكنك استخدام السمة android:targetSdkVersion في ملف البيان، كما هو موضّح في المستندات الخاصة بعنصر البيان <uses-sdk>.

نقل البيانات من Android 12 (المستوى 31) إلى Android 13 (المستوى 33)

لتحديث تطبيقك لاستهداف الإصدار 13 من نظام التشغيل Android، يُرجى اتّباع قائمة التغييرات في السلوك.

نقل البيانات من Android 11 (المستوى 30) إلى Android 12 (المستوى 31)

الأمان والأذونات

تجربة المستخدم

  • الإشعارات المخصّصة: لن تستخدم الإشعارات التي تتضمّن مشاهدات المحتوى المخصّص مساحة الإشعارات الكاملة، بدلاً من ذلك، يطبّق النظام نموذجًا عاديًا. يضمن هذا النموذج أن تكون الإشعارات المخصّصة لها نفس زخرفة الإشعارات الأخرى في جميع الحالات. ويتطابق هذا السلوك تقريبًا مع سلوك Notification.DecoratedCustomViewStyle.
  • تغييرات في التحقُّق من روابط تطبيقات Android: عند استخدام التحقق من روابط تطبيقات Android، احرِص على أن تتضمن فلاتر الأهداف فئة BROWSABLE وتتوافق مع مخطط HTTPS.

الأداء

  • قيود إطلاق الخدمات التي تعمل في المقدّمة: لاستهداف الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، لا يمكن لتطبيقك بدء الخدمات التي تعمل في المقدّمة أثناء تشغيله في الخلفية، باستثناء بعض الحالات الخاصة. إذا حاول أحد التطبيقات بدء خدمة تعمل في المقدّمة أثناء تشغيله في الخلفية، يحدث استثناء (باستثناء بعض الحالات الخاصة).

    يمكنك استخدام WorkManager لجدولة العمل السريع وبدء العمل أثناء تشغيل تطبيقك في الخلفية. لإكمال الإجراءات الحساسة للوقت التي يطلبها المستخدم، ابدأ الخدمات التي تعمل في المقدّمة ضمن تنبيه محدّد.

  • الإشعارات بشأن قيود الترامبولين: عندما ينقر المستخدمون على الإشعارات، تستجيب بعض التطبيقات عن طريق إطلاق مكوّن تطبيق يبدأ النشاط الذي يراه المستخدم ويتفاعل معه. ويُعرف مكون التطبيق هذا باسم ترامبولين الإشعارات.

    يجب ألا تبدأ التطبيقات أنشطة من الخدمات أو أجهزة استقبال البث التي يتم استخدامها كأجهزة تصوير للإشعارات. بعد أن ينقر المستخدم على إشعار أو زر إجراء في الإشعار، لن يتمكّن تطبيقك من الاتصال بـ startActivity() داخل خدمة أو في جهاز استقبال البث.

يمكنك عرض المجموعة الكاملة من التغييرات التي تؤثر في التطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 من واجهة برمجة التطبيقات).

نقل البيانات من الإصدارات الأقدم من Android 11 (المستوى 30)

اختَر إصدار Android الذي سيتم نقل البيانات منه:

نقل البيانات إلى Android 5 (المستوى 21 من واجهة برمجة التطبيقات)

يمكنك الاطّلاع على صفحة "تغييرات السلوك" المناسبة لكل إصدار من الإصدارات التالية للتأكّد من أنّ تطبيقك قد أخذ في الاعتبار التغييرات التي تم إدخالها في هذه الإصدارات:

تابع من خلال اتّباع التعليمات الواردة في القسم التالي.

نقل البيانات إلى 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 والإصدارات الأحدث من النظام الأساسي:

للحصول على قائمة شاملة بالتغييرات التي تم إدخالها على نظام Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على صفحة تغييرات السلوك لهذا الإصدار من النظام الأساسي.

نقل البيانات من Android 8 (API 26) إلى Android 9 (واجهة برمجة التطبيقات 28)

للحصول على قائمة شاملة بالتغييرات التي تم إدخالها على Android 9.0 (المستوى 28 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على التغييرات المتعلّقة بالسلوك.

نقل البيانات من Android 9 (المستوى 28) إلى Android 10 (المستوى 29 من واجهة برمجة التطبيقات)

نقل البيانات من Android 10 (المستوى 29) إلى Android 11 (المستوى 30)

للحصول على قائمة شاملة بالتغييرات التي تم إدخالها على نظام Android 11 (المستوى 30 لواجهة برمجة التطبيقات)، يُرجى الاطّلاع على صفحة تغييرات السلوك.

ويمكنك متابعة التحديث إلى واجهة برمجة التطبيقات 31 باتّباع التعليمات الواردة في القسم السابق.

تحديث التطبيقات

أثناء تعديل مستوى واجهة برمجة التطبيقات المستهدَف لتطبيقاتك، ننصحك باعتماد أحدث ميزات النظام الأساسي لتحديث تطبيقاتك ولإرضاء المستخدمين.

  • ننصحك باستخدام camX، التي يتوفّر فيها إصدار تجريبي، للاستفادة إلى أقصى حد من استخدام الكاميرا.
  • استخدِم مكونات Jetpack لمساعدتك في اتّباع أفضل الممارسات وتجنُّب كتابة الرموز النموذجية وتبسيط المهام المعقّدة كي تتمكّن من التركيز على الرمز الذي يهمّك.
  • يمكنك استخدام Kotlin لكتابة تطبيقات أفضل بشكل أسرع وباستخدام رمز أقل.
  • وتأكَّد من اتّباع متطلبات الخصوصية وأفضل الممارسات.
  • إتاحة المظهر الداكن في تطبيقاتك
  • يمكنك إضافة دعم التنقُّل بالإيماءات إلى تطبيقاتك.
  • نقل تطبيقك من خدمة "المراسلة عبر السحابة الإلكترونية من Google " (GCM) إلى أحدث إصدار من "المراسلة عبر السحابة الإلكترونية من Firebase".
  • الاستفادة من الإدارة المتقدمة للنوافذ.

التحقّق من حِزم تطوير البرامج (SDK) والمكتبات وتحديثها

تأكَّد من أنّ تبعيات حزمة تطوير البرامج (SDK) التابعة لجهة خارجية تتوافق مع واجهة برمجة التطبيقات 31: ينشرها بعض موفِّري حِزم SDK في بيانهم، بينما يتطلب البعض الآخر تحقيقًا إضافيًا. إذا كنت تستخدم حزمة تطوير برامج (SDK) لا تتوافق مع واجهة برمجة التطبيقات 31، ننصحك بإعطاء الأولوية للعمل مع موفِّر حِزم SDK لحلّ المشكلة.

بالإضافة إلى ذلك، تجدر الإشارة إلى أنّ targetSdkVersion لتطبيقك أو لعبتك قد يحظر الوصول إلى مكتبات أنظمة Android الأساسية الخاصة. لمزيد من التفاصيل، يُرجى الاطّلاع على ربط تطبيقات NDK بمكتبات النظام الأساسي.

يجب أيضًا التحقّق من أي قيود قد تكون متوفّرة في إصدار "مكتبة دعم Android" الذي تستخدمه. وكما هي الحال دائمًا، عليك التأكّد من التوافق بين الإصدار الرئيسي من مكتبة دعم Android وcompileSdkVersion في تطبيقك.

ننصحك باختيار جهاز targetSdkVersion أصغر من أو يساوي الإصدار الرئيسي لمكتبة الدعم. ننصحك بالتحديث إلى آخر إصدار متوافق مع "مكتبة الدعم" للاستفادة من أحدث ميزات التوافق وإصلاح الأخطاء.

اختبار تطبيقك

بعد تحديث مستوى واجهة برمجة التطبيقات لتطبيقك وميزاته حسب الحاجة، عليك اختبار بعض حالات الاستخدام الأساسية. الاقتراحات التالية ليست شاملة، ولكنها تهدف إلى توجيه عملية الاختبار. نقترح اختبار ما يلي:

  • أن يجمّع تطبيقك وفق واجهة برمجة التطبيقات 29 بدون أخطاء أو تحذيرات.
  • أن تطبيقك يتّبع استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات ويطلب منه الحصول على أذونات ولإجراء ذلك، اتّبِع الخطوات التالية:
    • انتقِل إلى شاشة "معلومات التطبيق" في التطبيق وأوقف كل إذن.
    • افتح التطبيق وتأكَّد من عدم حدوث أي أعطال.
    • إجراء اختبارات حالة الاستخدام الأساسية والتأكد من طلب الأذونات المطلوبة مرة أخرى.

  • يتعامل مع ميزة "القيلولة" مع النتائج المتوقعة وبدون أخطاء.
    • باستخدام adb، ضع جهاز الاختبار في Doze أثناء تشغيل تطبيقك.
      • اختبار أي حالات استخدام تؤدي إلى ظهور رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
      • اختبِر أيّ حالات استخدام تستخدِم "المنبهات" أو "الوظائف".
      • تخلص من أي تبعيات للخدمات التي تعمل في الخلفية.
    • اضبط تطبيقك على وضع الاستعداد للتطبيقات
      • اختبِر أي حالات استخدام تؤدي إلى ظهور رسائل "المراسلة عبر السحابة الإلكترونية من Firebase".
      • يُرجى اختبار أي حالات استخدام تستخدِم المنبّهات.

  • التعامل مع الصور / الفيديوهات الجديدة التي يتم التقاطها
  • معالجة مشاركة الملفات مع التطبيقات الأخرى
    • اختبِر أي حالة استخدام تشارك بيانات الملف مع أي تطبيق آخر (حتى تطبيق آخر من مطوّر البرامج نفسه).
    • اختبِر المحتوى في التطبيق الآخر ولا يؤدي إلى حدوث أعطال.

معلومات إضافية

تفعيل ميزة تلقّي الرسائل الإلكترونية في Google Play Console كي نتمكّن من إرسال أخبار وإشعارات مهمة إليك من Android وGoogle Play، بما في ذلك النشرة الإخبارية الشهرية للشركاء.