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

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

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

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

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

精确的闹钟适用于用户指定的通知,或是在确切时间需要执行的操作。从 Android 14 开始,系统不再向以 Android 13 及更高版本为目标平台的大多数新安装应用预先授予 SCHEDULE_EXACT_ALARM 权限,该权限默认处于拒绝状态。

详细了解安排精确闹钟的权限变化

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

على نظام التشغيل 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 版,当第一个 GATT 客户端使用 BluetoothGatt#requestMtu(int) API 请求 MTU 时,会请求将 BLE ATT MTU 设置为 517 个字节,并忽略针对该 ACL 连接的所有后续 MTU 请求。

如需解决此变更并提高应用的稳健性,请考虑以下选项:

  • 您的外围设备应使用可由外围设备适应的合理值来响应 Android 设备的 MTU 请求。最终商定的值将为 Android 请求的值和远程提供的值(例如 min(517, remoteMtu))中的最小值
    • 实现此修复可能需要更新外围设备的固件
  • 或者,根据外围设备的已知受支持值与接收到的 MTU 变化之间的最小值限制 GATT 特征写入
    • 温馨提示:您应该在支持的标头大小的基础上减少 5 个字节
    • 例如:arrayMaxLength = min(SUPPORTED_MTU, GATT_MAX_ATTR_LEN(517)) - 5

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

Android 14 引入了将应用放入受限待机存储分区的新原因。由于 onStartJobonStopJobonBind 方法超时,应用的作业会多次触发 ANR 错误。(如需了解对 onStartJobonStopJob 的更改,请参阅 JobScheduler 加强回调和网络行为。)

如需跟踪应用是否已进入受限待机存储分区,我们建议您在作业执行时使用 API UsageStatsManager.getAppStandbyBucket() 进行日志记录,或在应用启动时使用 UsageStatsManager.queryEventsForSelf() 进行日志记录。

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

在 Android 14(API 级别 34)及更高版本中,平台将可使用 mlock() 锁定的最大内存减少为每个进程 64 KB。在以前的版本中,每个进程的大小上限为 64 MB。此限制可促进跨应用和系统更好地管理内存。为了提高各设备之间的一致性,Android 14 针对兼容设备上的新 mlock() 限制添加了新的 CTS 测试

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

By design, an app's process is in a cached state when it's moved to the background and no other app process components are running. Such an app process is subject to being killed due to system memory pressure. Any work that Activity instances perform after the onStop() method has been called and returned, while in this state, is unreliable and strongly discouraged.

Android 14 introduces consistency and enforcement to this design. Shortly after an app process enters a cached state, background work is disallowed, until a process component re-enters an active state of the lifecycle.

Apps that use typical framework-supported lifecycle APIs – such as services, JobScheduler, and Jetpack WorkManager – shouldn't be impacted by these changes.

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

منح الإذن بالوصول الجزئي إلى الصور والفيديوهات

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

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

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

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

如果您的应用向用户显示不可关闭的前台通知,请注意:Android 14 已更改此行为,允许用户关闭此类通知。

这项变更适用于通过 Notification.Builder#setOngoing(true)NotificationCompat.Builder#setOngoing(true) 设置 Notification.FLAG_ONGOING_EVENT 来阻止用户关闭前台通知的应用。FLAG_ONGOING_EVENT 的行为已发生变化,使用户实际上能够关闭此类通知。

在以下情况下,此类通知仍不可关闭:

  • 当手机处于锁定状态时
  • 如果用户选择全部清除通知操作(有助于防止意外关闭)

此外,这一新行为不适用于以下用例中的通知:

  • CallStyle 通知
  • 企业设备政策控制器 (DPC) 和支持软件包

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

为了加强用户隐私保护,Android 14 增加了系统显示您在 Play 管理中心表单中声明的信息的位置数量。目前,用户可以在 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 لمستوى ظهور الحزمة لأغراض الخصوصية.