يتضمّن الإصدار 13 من نظام التشغيل Android تغييرات في السلوك قد تؤثّر في تطبيقك. وتنطبق تغييرات السلوك التالية على جميع التطبيقات عند تشغيلها على الإصدار 13 من نظام التشغيل Android، بغض النظر عن targetSdkVersion
. عليك اختبار تطبيقك ثم تعديله حسب الحاجة ليتوافق مع هذه التنسيقات بشكل صحيح، حيثما ينطبق ذلك.
احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثّر فقط في التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android.
الأداء والبطارية
إدارة المهام
بدءًا من الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات)، يمكن للمستخدمين إكمال سير عمل من لوحة الإشعارات لإيقاف التطبيقات التي تتضمّن خدمات مستمرة تعمل في المقدّمة، كما هو موضّح في الشكل 1. يُعرف هذا العنصر باسم مدير المهام. يجب أن تكون التطبيقات قادرة على التعامل مع عملية الإيقاف التي يبدأها المستخدم.
تحسين معالجة مهام الجلب المُسبَق باستخدام JobScheduler
توفّر JobScheduler طريقة لتصنيف مهام معيّنة في التطبيقات على أنّها مهام "الجلب المُسبَق" (باستخدام JobInfo.Builder.setPrefetch()
)، ما يعني أنّه من المفترض أن يتم تنفيذها قبل وقت قصير من تشغيل التطبيق التالي لتحسين تجربة المستخدم.
في السابق، كان JobScheduler يستخدم الإشارة فقط للسماح لمهام الجلب المسبق
باستخدام البيانات المجانية أو الزائدة بشكل انتهازي.
في الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يحاول النظام تحديد الموعد التالي لتشغيل أحد التطبيقات، ويستخدم هذا التقدير لتنفيذ مهام الجلب المسبق. يجب أن تحاول التطبيقات استخدام مهام الجلب المسبق لأي عمل تريد تنفيذه قبل تشغيل التطبيق في المرة التالية.
استخدام موارد البطارية
يوفّر نظام التشغيل Android 13 (المستوى 33 لواجهة برمجة التطبيقات) الطرق التالية التي تتيح للنظام إدارة عمر بطارية الجهاز بشكل أفضل:
- تم تعديل القواعد المتعلقة بالحالات التي يضع فيها النظام تطبيقك في حزمة التطبيق في وضع الاستعداد"المقيّد".
- قيود جديدة على المهام التي يمكن أن ينفّذها تطبيقك عندما يضعه المستخدم في "وضع الحظر" بشأن استخدام البطارية في الخلفية
أثناء اختبار تطبيقك بعد إجراء هذه التغييرات، احرص على التحقّق من ما يلي:
اختبِر طريقة استجابة تطبيقك عندما يضعه النظام في حزمة التطبيقات في وضع الاستعداد"المقيّدة". استخدِم أمر Android Debug Bridge (ADB) التالي لتعيين تطبيقك إلى هذه المجموعة:
adb shell am set-standby-bucket PACKAGE_NAME restricted
اختبِر طريقة استجابة تطبيقك للقيود التالية التي تنطبق عادةً على التطبيقات التي تكون في "حالة مقيّدة" من حيث استهلاك البطارية في الخلفية:
- يتعذّر تشغيل الخدمات التي تعمل في المقدّمة
- تتم إزالة الخدمات الحالية التي تعمل في المقدّمة من المقدّمة
- عدم تفعيل المنبّهات
- عدم تنفيذ المهام
استخدِم أمر ADB التالي لوضع تطبيقك في حالة "مقيّد":
adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
حصص الرسائل ذات الأولوية العالية في "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM)
تعدّل تحديثات نظام التشغيل Android 13 (المستوى 33 لواجهة برمجة التطبيقات) حصص المراسلة عبر السحابة الإلكترونية من Firebase (FCM) لتحسين موثوقية تسليم رسائل FCM ذات الأولوية العالية للتطبيقات التي تعرض الإشعارات استجابةً لرسائل FCM ذات الأولوية العالية. تم إجراء التغييرات التالية في نظام التشغيل Android 13 (المستوى 33 لواجهة برمجة التطبيقات):
- لم تعُد حاويات وضع "التطبيق في وضع الاستعداد" تحدّد عدد رسائل FCM ذات الأولوية العالية التي يمكن أن يستخدمها التطبيق.
- يخفض النظام الآن من أولوية الرسائل ذات الأولوية العالية إذا رصد تطبيقًا يرسل باستمرار رسائل ذات أولوية عالية لا تؤدي إلى ظهور إشعار.
كما هو الحال في إصدارات Android السابقة، يتم خفض أولوية رسائل FCM ذات الأولوية العالية التي تتجاوز الحصة إلى أولوية عادية. عند بدء الخدمات التي تعمل في المقدّمة (FGS) استجابةً لرسالة FCM، ننصحك بالتحقّق من نتيجة RemoteMessage.getPriority()
والتأكّد من أنّها PRIORITY_HIGH
و/أو معالجة أي استثناءات محتملة ForegroundServiceStartNotAllowedException
.
إذا كان تطبيقك لا ينشر الإشعارات دائمًا استجابةً لرسائل FCM ذات الأولوية العالية، ننصحك بتغيير أولوية رسائل FCM هذه إلى عادية حتى لا يتم تخفيض مستوى الرسائل التي تؤدي إلى ظهور إشعار.
الخصوصية
إذن التشغيل لإرسال الإشعارات
يقدّم الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) إذنًا بإرسال الإشعارات أثناء وقت التشغيل:
POST_NOTIFICATIONS
.
يساعد هذا التغيير المستخدمين في التركيز على الإشعارات الأكثر أهمية بالنسبة إليهم.
ننصحك بشدة باستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث في أقرب وقت ممكن للاستفادة من المزايا الإضافية التي توفّرها هذه الميزة من حيث التحكّم والمرونة.
مزيد من المعلومات حول أفضل الممارسات المتعلقة بأذونات التطبيقات
إخفاء المحتوى الحسّاس من الحافظة
إذا كان تطبيقك يسمح للمستخدمين بنسخ محتوى حسّاس، مثل كلمات المرور أو معلومات بطاقة الائتمان، إلى الحافظة، عليك إضافة علامة إلى ClipDescription
في ClipData قبل استدعاء ClipboardManager#setPrimaryClip()
. يؤدي إضافة هذا الخيار إلى منع ظهور المحتوى الحسّاس في معاينة المحتوى.


للإبلاغ عن محتوى حسّاس، أضِف قيمة منطقية إضافية إلى ClipDescription
. ويجب أن تفعل جميع التطبيقات ذلك بغض النظر عن مستوى واجهة برمجة التطبيقات المستهدَف.
// When your app is compiled with the API level 33 SDK or higher
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
}
}
// If your app is compiled with a lower SDK
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean("android.content.extra.IS_SENSITIVE", true)
}
}
لمزيد من المعلومات حول واجهة المستخدم الجديدة للحافظة، يُرجى الانتقال إلى صفحة ميزة النسخ واللصق.
الأمان
التوقّف عن استخدام رقم تعريف المستخدم المشترَك
إذا كان تطبيقك يستخدم السمة المتوقّفة نهائيًا
android:sharedUserId
ولم يعُد يعتمد على وظيفة السمة، يمكنك ضبط السمة
android:sharedUserMaxSdkVersion
على 32
، كما هو موضّح في مقتطف الرمز البرمجي التالي:
<manifest ...> <!-- To maintain backward compatibility, continue to use "android:sharedUserId" if you already added it to your manifest. --> android:sharedUserId="SHARED_PACKAGE_NAME" android:sharedUserMaxSdkVersion="32" ... </manifest>
تُعلم هذه السمة النظام بأنّ تطبيقك لم يعُد يعتمد على معرّف مستخدم مشترك. إذا كان تطبيقك يعرِّف android:sharedUserMaxSdkVersion
وتم تثبيته حديثًا على أجهزة تعمل بالإصدار 13 من نظام التشغيل Android أو إصدار أحدث، سيتصرف تطبيقك كما لو أنّك لم تحدِّد android:sharedUserId
مطلقًا. تستمر التطبيقات المعدَّلة في استخدام رقم تعريف المستخدم المشترَك الحالي.
تتسبّب معرّفات المستخدمين المشترَكة في حدوث سلوك غير حتمي في مدير الحِزم. بدلاً من ذلك، يجب أن يستخدم تطبيقك آليات اتصال مناسبة، مثل الخدمات وموفّري المحتوى، لتسهيل إمكانية التشغيل التفاعلي بين المكوّنات المشترَكة.
تجربة المستخدم
إشعارات الخدمات التي تعمل في المقدّمة التي يمكن تجاهلها
على الأجهزة التي تعمل بنظام التشغيل Android 13 أو الإصدارات الأحدث، يمكن للمستخدمين إغلاق الإشعارات المرتبطة بالخدمات التي تعمل في المقدّمة تلقائيًا.
الوظيفة الأساسية
تمت إزالة النسخة القديمة من تنفيذ خدمة تحويل الكلام إلى نص
يزيل الإصدار 13 من نظام التشغيل Android عملية تنفيذ SpeechService
، بما في ذلك
طريقة الإدخال الصوتية (IME) وRecognitionService
وواجهة برمجة التطبيقات المستندة إلى الأهداف،
من تطبيق Google.
في نظام التشغيل Android 12، حدثت التغييرات التالية:
- تم نقل وظائف
SpeechService
إلى تطبيق خدمات تقنيات الكلام من Google، الذي أصبح مزوّدSpeechService
التلقائي. - تم نقل وظيفة
RecognitionService
إلى تطبيق Android System Intelligence لتفعيل ميزة "التعرّف على الكلام" على الجهاز فقط.
للمساعدة في الحفاظ على توافق التطبيقات مع نظام التشغيل Android 12، يستخدم تطبيق Google برنامجًا وسيطًا لتوجيه الزيارات إلى تطبيق "خدمات الكلام من Google". وفي نظام التشغيل Android 13، تتم إزالة هذا البرنامج الوسيط.
يجب أن تستخدم التطبيقات مقدّم الخدمة التلقائي للجهاز في ما يخص SpeechService
، بدلاً من ترميز تطبيق معيّن بشكل ثابت.