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

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

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

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

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

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

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

تتم إضافة أحداث البث المسجّلة للسياق إلى قائمة الانتظار أثناء تخزين التطبيقات مؤقتًا

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

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

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

从 Android 14 开始,当您的应用调用 killBackgroundProcesses() 时,该 API 只能终止您自己应用的后台进程。

如果您传入另一个应用的软件包名称,此方法对该应用的后台进程没有影响,并且 Logcat 中会显示以下消息:

Invalid packageName: com.example.anotherapp

您的应用不应使用 killBackgroundProcesses() API,也不得以其他方式尝试影响其他应用的进程生命周期,即使在旧版操作系统上也是如此。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() 进行日志记录。

لا يزيد حجم قفل mlock عن 64 كيلوبايت.

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

فرض النظام استخدام موارد التطبيقات المُخزَّنة مؤقتًا

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

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

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

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

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

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

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

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

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

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

  • CallStyle 通知
  • 企业设备政策控制器 (DPC) 和支持软件包
  • 媒体通知
  • 默认的搜索选择器软件包

ظهور معلومات "أمان البيانات" أكثر وضوحًا

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

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

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

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

تكبير الخط غير الخطي إلى 200%

从 Android 14 开始,系统支持字体放大高达 200%,为弱视用户提供了符合网络内容无障碍指南 (WCAG) 的其他无障碍功能选项。

如果您已使用放大像素 (sp) 单位来定义文本大小,这项更改可能不会对您的应用产生太大影响。不过,您应在启用最大字号 (200%) 的情况下执行界面测试,确保应用能够在不影响易用性的情况下适应较大的字号。

الأمان

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

从 Android 14 开始,targetSdkVersion 低于 23 的应用无法安装。要求应用满足这些最低目标 API 级别要求有助于提高用户的安全性和隐私性。

恶意软件通常会以较旧的 API 级别为目标平台,以绕过在较新版本 Android 中引入的安全和隐私保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 14 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示以下消息:

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

在升级到 Android 14 的设备上,targetSdkVersion 低于 23 的所有应用都将继续保持安装状态。

如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:

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

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

媒体库支持查询 OWNER_PACKAGE_NAME 列,该列表示存储特定媒体文件的应用。从 Android 14 开始,除非满足以下条件之一,否则系统会隐去此值:

  • 存储媒体文件的应用有一个软件包名称始终对其他应用可见。
  • 查询媒体库的应用会请求 QUERY_ALL_PACKAGES 权限。

详细了解 Android 如何出于隐私保护目的而过滤软件包可见性