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

عند تحميل حزمة 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 لواجهة برمجة التطبيقات)

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

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

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

الأداء

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

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

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

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

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

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

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

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

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

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

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

تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث من النظام الأساسي:

  • أذونات وقت التشغيل

    • لا يتم منح الأذونات الخطيرة إلا أثناء التشغيل. يجب أن توفّر مسارات واجهة المستخدم إمكانات لمنح هذه الأذونات.

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

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

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

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

تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 7.0 من نظام Android والإصدارات الأحدث من النظام الأساسي:

  • وضع "الاستراحة" و"وضع الاستعداد للتطبيقات"

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

    عندما يكون الجهاز في وضعَي "القيلولة" و"تطبيقات وضع الاستعداد"، يتصرف النظام على النحو التالي:

  • تغييرات الأذونات

    • يحظر النظام الوصول إلى الأدلة الخاصة بالتطبيقات.
    • يؤدي عرض عنوان URI file:// خارج تطبيقك إلى بدء FileUriExposedException. إذا كنت بحاجة إلى مشاركة الملفات خارج تطبيقك، نفِّذ الخطوات التالية: FileProvider
  • يحظر النظام الربط بمكتبات غير مكتبة NDK.

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

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

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

تنطبق الاعتبارات التالية على التطبيقات التي تستهدف الإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث:

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

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

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

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

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

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

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

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

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

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

التحقّق من حِزم SDK والمكتبات وتحديثها

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

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

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

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

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

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

  • أنّه يتم تجميع تطبيقك باستخدام واجهة برمجة التطبيقات 29 بدون أخطاء أو تحذيرات
  • أنّ تطبيقك لديه استراتيجية للحالات التي يرفض فيها المستخدم طلبات الأذونات ويطلب من المستخدم منح الأذونات لإجراء ذلك:

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

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

    • تأكَّد من أنّ تطبيقك يعالج عمليات البث ACTION_NEW_PICTURE و ACTION_NEW_VIDEO المحظورة بشكل صحيح (أي أنّه يتم نقلها إلى مهام JobScheduler).
    • تأكَّد من أنّ أيّ حالات استخدام مهمة تعتمد على هذه الأحداث لا تزال تعمل بشكلٍ جيد.
  • معالجة مشاركة الملفات مع تطبيقات أخرى - اختبار أي حالة استخدام تشارك بيانات الملفات مع أي تطبيق آخر (حتى تطبيق آخر من المطوِّر نفسه)

    • اختبِر ظهور المحتوى في التطبيق الآخر وعدم تسبُّبه في تعطُّل التطبيق.

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

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