تغييرات السلوك: جميع التطبيقات

يتضمّن نظام Android 14 تغييرات على السلوك قد تؤثر في تطبيقك. تسري تغييرات السلوك التالية على جميع التطبيقات عند تشغيلها على Android 14، بغض النظر عن targetSdkVersion. يجب اختبار تطبيقك ثم تعديله حسب الحاجة لإتاحة هذه التعديلات بشكل صحيح، حيثما ينطبق ذلك.

احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثر فقط في التطبيقات التي تستهدف الإصدار 14 من نظام التشغيل Android.

الوظيفة الأساسية

يتم تلقائيًا رفض ضبط المنبّهات المحدّدة الوقت.

تستهدف التنبيهات الدقيقة إشعارات المستخدمين، أو الإجراءات التي يجب أن تحدث في وقت محدد. بدءًا من نظام التشغيل Android 14، SCHEDULE_EXACT_ALARM الإذن لم يتم منحه مسبقًا لمعظم التطبيقات المثبتة حديثًا التي تستهدف الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث—الإذن مرفوض تلقائيًا.

تعرَّف على المزيد من المعلومات عن التغييرات التي تطرأ على الأذونات المرتبطة بجدولة التنبيهات الدقيقة.

يتم وضع عمليات البث المسجّلة للسياق في قائمة الانتظار أثناء التخزين المؤقت للتطبيقات.

على نظام التشغيل Android 14، يمكن للنظام وضع عمليات البث المسجّلة حسب السياق في قائمة انتظار بينما يكون التطبيق في حالة التخزين المؤقت. وهذا يشبه سلوك الوضع في "قائمة المحتوى التالي" الذي يوفّره Android 12 (المستوى 31 من واجهة برمجة التطبيقات) لمعاملات برامج الصنف غير المتزامنة. لا يتم وضع عمليات البث المعلنة في البيان في قائمة الانتظار، وتتم إزالة التطبيقات من حالة التخزين المؤقت لإرسال البث.

عندما يغادر التطبيق حالة التخزين المؤقت، كالعودة إلى المقدّمة، يعرض النظام أي عمليات بث في قائمة الانتظار. قد يتم دمج أحداث متعددة من عمليات بث معينة في بث واحد. استنادًا إلى عوامل أخرى، مثل حالة النظام، قد تتم إزالة التطبيقات من حالة ذاكرة التخزين المؤقت، ويتم تسليم أي عمليات بث في قائمة الانتظار سابقًا.

بإمكان التطبيقات إنهاء العمليات التي تتم في الخلفية فقط

بدءًا من نظام التشغيل Android 14، عندما يستدعي تطبيقك killBackgroundProcesses()، لن تتمكن واجهة برمجة التطبيقات من إيقاف سوى عمليات الخلفية لتطبيقك.

إذا ضبطت اسم الحزمة لتطبيق آخر، لن يكون لهذه الطريقة أي تأثير في العمليات التي تتم في الخلفية لهذا التطبيق، وستظهر الرسالة التالية في Logcat:

Invalid packageName: com.example.anotherapp

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

تم ضبط MTU على 517 لأول عميل GATT يطلب MTU.

بدءًا من نظام التشغيل Android 14، تلتزم حزمة البلوتوث على Android بشكل أكثر صرامة بالإصدار 5.2 من مواصفات البلوتوث الأساسية وتطلب حجم BLE ATT MTU من وحدة بايتBluetoothGatt#requestMtu(int)

لمعالجة هذا التغيير وجعل تطبيقك أكثر فعالية، يُرجى مراعاة الخيارات التالية:

  • يجب أن يستجيب الجهاز الملحق لطلب وحدة النقل القصوى (MTU) لجهاز Android بقيمة معقولة يمكن توصيلها مع الجهاز الملحق. وستكون القيمة النهائية التي تم التفاوض عليها ضِمن الحدّ الأدنى للقيمة المطلوبة من Android والقيمة المقدَّمة عن بُعد (على سبيل المثال، min(517, remoteMtu)).
    • قد يتطلب تنفيذ هذا الإصلاح تحديث البرامج الثابتة للجهاز الملحق.
  • بدلاً من ذلك، يمكنك تحديد سمات GATT استنادًا إلى الحد الأدنى بين القيمة المتوافقة المعروفة للجهاز الملحق وتغيُّر MTU الذي تم تلقّيه
      .
    • تذكير: يجب تقليل 5 بايت من الحجم المتوافق للعناوين
    • على سبيل المثال: arrayMaxLength = min(SUPPORTED_MTU, GATT_MAX_ATTR_LEN(517)) - 5

سبب جديد لإضافة تطبيق إلى حزمة الاستعداد المحدود

يقدّم Android 14 سببًا جديدًا لإدراج التطبيق في حزمة الاستعداد المحدود. تؤدي مهام التطبيق إلى ظهور أخطاء ANR عدة مرات بسبب انتهاء مهلة onStartJob أو onStopJob أو onBind. (راجع JobScheduler تعزز سلوك معاودة الاتصال والشبكة بالنسبة إلى التغييرات في onStartJob وonStopJob.)

لتتبُّع ما إذا كان التطبيق قد دخل إلى حزمة وضع الاستعداد المحدود أم لا، ننصحك بالتسجيل باستخدام واجهة برمجة التطبيقات UsageStatsManager.getAppStandbyBucket() عند تنفيذ المهمة أو UsageStatsManager.queryEventsForSelf() عند بدء تشغيل التطبيق.

حجم محدود بحجم 64 كيلوبايت

في Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يقلل النظام الأساسي من الحد الأقصى من الذاكرة التي يمكن قفلها باستخدام mlock() إلى 64 كيلوبايت لكل عملية. وكان الحدّ الأقصى المسموح به في الإصدارات السابقة 64 ميغابايت لكل عملية. يعزز هذا التقييد إدارة الذاكرة بشكل أفضل عبر التطبيقات والنظام. لتوفير المزيد من الاتساق على جميع الأجهزة، يضيف Android 14 اختبار CTS جديد للحد الأقصى الجديد mlock() على الأجهزة المتوافقة.

يفرض النظام استخدام موارد التطبيقات في ذاكرة التخزين المؤقت.

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

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

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

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

تغييرات في تجربة المستخدمين للإشعارات التي لا يمكن إغلاقها

إذا كان تطبيقك يعرض للمستخدمين إشعارات لا يمكن إغلاقها في المقدّمة، يعني ذلك أنّ نظام التشغيل Android 14 قد غيّر السلوك للسماح للمستخدمين برفض هذه الإشعارات.

ينطبق هذا التغيير على التطبيقات التي تمنع المستخدمين من إغلاق الإشعارات التي تعمل في المقدّمة من خلال ضبط Notification.FLAG_ONGOING_EVENT إلى Notification.Builder#setOngoing(true) أو NotificationCompat.Builder#setOngoing(true). وتم تغيير سلوك FLAG_ONGOING_EVENT، بحيث يمكن للمستخدم إغلاق هذه الإشعارات بشكل فعلي.

لا تزال هذه الأنواع من الإشعارات غير قابلة للإغلاق في الحالات التالية:

  • عندما يكون الهاتف مقفلاً
  • إذا اختار المستخدم إجراء محو الكل للإشعارات (ما يساعد في حالات الرفض غير المقصودة)

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

  • إشعارات CallStyle
  • وحدة التحكّم بسياسة الجهاز (DPC) والحِزم الداعمة للمؤسسات
  • إشعارات الوسائط
  • حزمة "أداة اختيار البحث" التلقائية

معلومات "أمان البيانات" تظهر بشكل أكبر

لتعزيز خصوصية المستخدم، يزيد Android 14 عدد الأماكن التي يعرض فيها النظام المعلومات التي أعلنتها في نموذج Play Console. في الوقت الحالي، يمكن للمستخدمين الاطّلاع على هذه المعلومات في قسم أمان البيانات ضمن بطاقة بيانات تطبيقك في Google Play.

ونحن نشجعك على مراجعة سياسات مشاركة بيانات الموقع الجغرافي لتطبيقك وتخصيص لحظات لإجراء أي تعديلات سارية على قسم "أمان البيانات" في Google Play.

يمكنك الاطّلاع على المزيد من المعلومات في الدليل حول كيفية ظهور معلومات "أمان البيانات" بشكل أكبر على نظام التشغيل Android 14.

تسهيل الاستخدام

الضبط غير الخطّي لحجم الخط بنسبة 200%

بدءًا من نظام التشغيل Android 14، يوفّر النظام إمكانية تغيير حجم الخط بنسبة تصل إلى 200%، ما يوفّر للمستخدمين ضعاف البصر خيارات إضافية لتسهيل الاستخدام تتوافق مع إرشادات إتاحة محتوى الويب (WCAG).

إذا كنت تستخدم وحدات البكسل (sp) المُعدَّلة لتحديد حجم النص، لن يؤثر هذا التغيير على الأرجح في التطبيق بشكل كبير. ومع ذلك، يجب إجراء اختبار واجهة المستخدم مع تفعيل الحد الأقصى لحجم الخط (200%) لضمان استيعاب تطبيقك لأحجام خطوط أكبر بدون التأثير في سهولة الاستخدام.

الأمان

الحد الأدنى لمستوى واجهة برمجة التطبيقات المستهدَف القابل للتثبيت

بدءًا من نظام التشغيل Android 14، لا يمكن تثبيت التطبيقات التي يقل حجمها عن targetSdkVersion عن 23. إن مطالبة التطبيقات باستيفاء الحد الأدنى من متطلبات مستوى واجهة برمجة التطبيقات المستهدف إلى تحسين الأمان والخصوصية للمستخدمين.

غالبًا ما تستهدف البرامج الضارة مستويات واجهة برمجة التطبيقات القديمة بهدف تجاوز إجراءات حماية الخصوصية والأمان التي تم تقديمها في الإصدارات الأحدث من Android. على سبيل المثال، تستخدم بعض تطبيقات البرامج الضارة targetSdkVersion من 22 لتجنب التعرض لنموذج أذونات وقت التشغيل الذي تم تقديمه في عام 2015 بواسطة Android 6.0 Marshmallow (مستوى واجهة برمجة التطبيقات 23). يصعّب هذا التغيير في نظام التشغيل Android 14 على البرامج الضارة تجنُّب التحسينات المتعلّقة بالأمان والخصوصية. ستؤدي محاولة تثبيت تطبيق يستهدف مستوى أدنى من واجهة برمجة التطبيقات إلى فشل التثبيت، وستظهر الرسالة التالية في Logcat:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23, but found 7

على الأجهزة التي تتم ترقيتها إلى Android 14، ستظلّ أي تطبيقات تتضمّن targetSdkVersion أقل من 23 مثبّتة.

إذا كنت بحاجة إلى اختبار تطبيق يستهدف مستوى واجهة برمجة تطبيقات أقدم، فاستخدم أمر ADB التالي:

adb install --bypass-low-target-sdk-block FILENAME.apk

قد يتم إخفاء أسماء حِزم مالك الوسائط

يوفّر متجر الوسائط طلبات البحث عن العمود OWNER_PACKAGE_NAME، الذي يشير إلى التطبيق الذي خزّن ملف وسائط معيّن. بدءًا من نظام التشغيل Android 14، يتم تنقيح هذه القيمة ما لم ينطبق أحد الشروط التالية على الأقل:

  • يحتوي التطبيق الذي خزّن ملف الوسائط على اسم حزمة يظهر دائمًا للتطبيقات الأخرى.
  • ويطلب التطبيق الذي يستعلم من متجر الوسائط الحصول على إذن QUERY_ALL_PACKAGES.

تعرَّف على المزيد من المعلومات حول كيفية تصفية Android لمستوى ظهور الحزمة لأغراض الخصوصية.