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

يتضمّن الإصدار 14 من نظام التشغيل Android تغييرات في السلوك قد تؤثّر في تطبيقك. تنطبق تغييرات السلوك التالية على جميع التطبيقات عند تشغيلها على الإصدار 14 من نظام التشغيل Android، بغض النظر عن 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 يطلب وحدة نقل قصوى

اعتبارًا من الإصدار 14 من Android، يلتزم حِزمة Android Bluetooth بشكل أكثر صرامة بالإصدار 5.2 من مواصفات Bluetooth الأساسية ويطلب وحدة النقل القصوى (MTU) لبروتوكول ATT في BLE‏ (البروتوكول الخفيف لواجهة برمجة التطبيقات) لتكون 517 بايت عندما يطلب أول عميل GATT وحدة النقل القصوى باستخدام BluetoothGatt#requestMtu(int) API، ويتجاهل كل طلبات MTU التالية في اتصال ACL هذا.

لحلّ هذه المشكلة وجعل تطبيقك أكثر أمانًا، ننصحك بالاطّلاع على الخطوات التالية:

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

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

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

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

يقتصر حجم mlock على 64 كيلوبايت

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

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

从设计上讲,当应用的进程移至后台且没有任何其他应用进程组件在运行时,应用进程将处于缓存状态。此类应用进程可能会因系统内存压力而终止。在此状态下,Activity 实例在调用并返回 onStop() 方法后执行的任何工作均不可靠,强烈建议不要这样做。

Android 14 对此设计引入了一致性和强制执行要求。在应用进程进入缓存状态后不久,系统会禁止后台工作,直到进程组件重新进入生命周期的活跃状态。

使用框架支持的典型生命周期 API(例如服务JobSchedulerJetpack WorkManager)的应用应该不受这些变化的影响。

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

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

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

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

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

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

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

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

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

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

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

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

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

الضبط غير الخطي لحجم الخط بما يصل إلى ‎200%

从 Android 14 开始,系统支持将字体放大至最高 200%,为用户提供更多无障碍选项。

如果您已使用可缩放像素 (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 如何出于隐私保护目的而过滤软件包可见性