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

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

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

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

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

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

مزيد من المعلومات حول التغييرات التي تطرأ على الإذن الخاص بجدولة المنبهات الدقيقة.

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

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

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

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

Starting in Android 14, when your app calls killBackgroundProcesses(), the API can kill only the background processes of your own app.

If you pass in the package name of another app, this method has no effect on that app's background processes, and the following message appears in Logcat:

Invalid packageName: com.example.anotherapp

Your app shouldn't use the killBackgroundProcesses() API or otherwise attempt to influence the process lifecycle of other apps, even on older OS versions. Android is designed to keep cached apps in the background and kill them automatically when the system needs memory. If your app kills other apps unnecessarily, it can reduce system performance and increase battery consumption by requiring full restarts of those apps later, which takes significantly more resources than resuming an existing cached app.

يتم ضبط وحدة النقل القصوى على 517 لأول عميل GATT يطلب وحدة النقل القصوى.

从 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 سببًا جديدًا لإضافة تطبيق إلى حزمة وضع الاستعداد المحدود. تؤدي مهام التطبيق إلى ظهور أخطاء ANR عدّة مرات بسبب انتهاء مهلة طريقة onStartJob أو onStopJob أو onBind. (راجع JobScheduler تعزز معاودة الاتصال وسلوك الشبكة عند إجراء التغييرات على onStartJob وonStopJob.)

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

لا يزيد حجم قفل mlock عن 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 غيَّر السلوك للسماح للمستخدمين بإغلاق هذه الإشعارات.

ينطبق هذا التغيير على التطبيقات التي تمنع المستخدمين من إغلاق المقدّمة. الإشعارات من خلال ضبط Notification.FLAG_ONGOING_EVENT من خلال Notification.Builder#setOngoing(true) أو NotificationCompat.Builder#setOngoing(true) سلوك تم إجراء تغييرات من قِبل "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 التالي :com

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

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

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

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

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