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

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

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

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

يعدّل نظام Android 15 أو يوسّع إمكانات نظام Android الأساسية المختلفة.

التغييرات في حالة الحزمة المتوقفة

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已置于停止状态。

إتاحة صفحات بحجم 16 كيلوبايت

Android 过去仅支持 4 KB 内存页面大小, 优化了系统内存性能,以针对 Android 设备通常具备的功能。从 Android 15 开始,AOSP 支持 配置为使用 16 KB (16 KB) 页面大小的设备 设备)。如果您的应用使用任何 NDK 库,请直接使用 或者通过 SDK 间接创建,那么,您需要重新构建自己的应用 支持这些 16KB 设备。

随着设备制造商不断打造出 物理内存 (RAM),许多此类设备都会采用 16KB(以及 页面大小以优化设备的性能。正在添加 支持 16 KB 页面大小的设备,可使您的应用在这些设备上运行 并有助于您的应用从相关的广告效果中获益 改进。如果不重新编译,应用可能无法在 16KB 设备上运行 在未来的 Android 版本中正式推出。

为帮助您为应用添加支持,我们提供了有关如何检查 如果您的应用受到影响 重新构建您的应用(如果适用),以及如何在 Google Play 中 使用模拟器(包括 Android 15)的 16 KB 环境 系统映像)。

优势和性能提升

配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但系统和应用的性能也会得到各种提升:

  • 缩短了系统内存压力时的应用启动时间:平均降低了 3.16%;对于我们测试的某些应用而言,改进幅度更大(最高可达 30%)
  • 应用启动期间的功耗降低:平均降低了 4.56%
  • 相机启动更快:热启动速度平均提高了 4.48%,冷启动速度平均提高了 6.60%
  • 缩短了系统启动时间:平均缩短了 8%(约 950 毫秒)

这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。随着测试的继续进行,我们将进一步分析应用的潜在收益。

检查您的应用是否受到影响

如果您的应用使用了任何原生代码,则应重新构建应用以支持 16 KB 设备。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器确定是否存在任何原生代码,然后检查您找到的任何共享库的 ELF 段对齐情况

如果您的应用仅使用以 Java 或 Kotlin 编程语言编写的代码(包括所有库或 SDK),则该应用已经支持 16 KB 设备。不过,我们建议您在 16 KB 环境中测试应用,以验证应用行为是否没有意外回归。

التغييرات المطلوبة لبعض التطبيقات لتتوافق مع المساحة الخاصة

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

جميع التطبيقات

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

تطبيقات طبية

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

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

لهذه الأسباب، إذا طورت تطبيقًا طبيًا، راجِع الطريقة التي قد تظهر بها هذه الميزة. التأثير في تطبيقك واتخاذ الإجراءات المناسبة، مثل إعلام المستخدمين بعدم تثبيت تطبيقك في المساحة الخاصة لتجنُّب تعطُّل التطبيق المهم والإمكانات.

تطبيقات مشغّل التطبيقات

إذا طورت أحد تطبيقات المشغّل، يجب عليك القيام بما يلي قبل أن تكون التطبيقات في ستكون المساحة الخاصة مرئية:

  1. يجب تعيين تطبيقك كتطبيق مشغّل التطبيقات التلقائي للجهاز تمتلك دور ROLE_HOME.
  2. يجب أن يفصح تطبيقك عن ACCESS_HIDDEN_PROFILES. إذن عادي في ملف البيان لتطبيقك.

يجب أن تتعامل تطبيقات "مشغّل التطبيقات" التي تقدّم بيانًا عن إذن "ACCESS_HIDDEN_PROFILES" مع حالات استخدام المساحة الخاصة التالية:

  1. يجب أن يحتوي تطبيقك على حاوية مشغّل تطبيقات منفصلة للتطبيقات المثبَّتة في المساحة الخاصة. استخدِم الطريقة getLauncherUserInfo() من أجل تحديد نوع الملف الشخصي للمستخدم الذي تتم معالجته.
  2. يجب أن يكون المستخدم قادرًا على إخفاء حاوية المساحة الخاصة وإظهارها.
  3. يجب أن يتمكّن المستخدم من قفل حاوية المساحة الخاصة وفتح قفلها. استخدام طريقة requestQuietModeEnabled() للقفل (بحلول اجتياز true) أو فتح قفل المساحة الخاصة (من خلال تجاوز false)
  4. أثناء القفل، يجب ألا تكون أي تطبيقات في حاوية المساحة الخاصة مرئية أو قابلة للاكتشاف من خلال آليات مثل البحث. يجب أن يسجِّل تطبيقك المستلِم في ACTION_PROFILE_AVAILABLE و ACTION_PROFILE_UNAVAILABLE عمليات البث وتعديل واجهة مستخدم في تطبيقك عندما تكون المساحة الخاصة مقفلة أو مفتوحة تغييرات الحاوية. يتضمن كلا البثين EXTRA_USER، الذي يمكن لتطبيقك استخدامه للإشارة إلى مستخدم ملف شخصي خاص.

    يمكنك أيضًا استخدام الطريقة isQuietModeEnabled() لإجراء ما يلي: التحقّق مما إذا كان الملف الشخصي للمساحة الخاصة مقفلاً أم لا

تطبيقات متجر التطبيقات

تتضمن المساحة الخاصة الزر "تثبيت تطبيقات" الذي يطلق زرًا ضمنيًا نية تثبيت تطبيقات في المساحة الخاصة للمستخدم. ليتمكّن تطبيقك من الحصول على هذا الغرض الضمني، يُرجى الإفصاح عن <intent-filter> في ملف بيان تطبيقك الذي يحتوي على <category> من CATEGORY_APP_MARKET

إزالة خط رموز الإيموجي المستند إلى ملفات PNG

基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf) 已 只留下基于矢量的文件从 Android 13 (API) 开始 级别 33),系统表情符号渲染程序使用的表情符号字体文件已从 PNG 文件转换为矢量文件。系统保留了 Android 13 和 14 中的旧版字体文件。 具有自己的字体渲染程序的应用可以继续使用旧版字体文件 直到能够升级为止

要查看您的应用是否会受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件。

您可以选择以多种方式调整您的应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的 Canvas,并在必要时使用它获取原始图像。
  • 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
  • 万不得已时,可以将旧版表情符号字体文件打包 (NotoColorEmoji.ttf) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面

زيادة الحد الأدنى لإصدار حزمة تطوير البرامج (SDK) المستهدَف من 23 إلى 24

Android 15 基于 在 Android 14 中进行的更改,并扩展了 安全性。在 Android 15 中, 无法安装低于 24 的 targetSdkVersion。 要求应用符合现代 API 级别有助于确保更好的安全性和 保护隐私。

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

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

在升级到 Android 15 的设备上,targetSdkVersion 级别较低的任何应用 安装在 Google Play 上

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

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

الأمان والخصوصية

Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。

开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:

动态密码隐去

Android 会阻止实现 NotificationListenerService 的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。

屏幕共享保护

  • 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了 setPublicVersion(),Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。
  • 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
  • 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
  • 除了 Android 自动识别敏感字段之外,开发者还可以使用 setContentSensitivity 手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。
  • 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。

الكاميرا والوسائط

يُجري نظام التشغيل Android 15 التغييرات التالية على سلوك الكاميرا والوسائط في جميع التطبيقات.

يؤدي تشغيل الصوت المباشر وتفريغه إلى إلغاء مقاطع الصوت المباشرة أو التي تم تفريغها والتي سبق فتحها عند بلوغ حدود الموارد.

在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack 对象失效,从而阻止执行新的轨道请求。

(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

تجربة المستخدم وواجهة المستخدم للنظام

يتضمّن Android 15 بعض التغييرات التي تهدف إلى توفير تجربة مستخدم أكثر اتساقًا وسهولة.

تفعيل الصور المتحركة لإيماءة الرجوع إلى الخلف التنبؤية في التطبيقات التي فعّلت هذه الميزة

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

إيقاف التطبيقات المصغّرة عندما يوقف المستخدم أحد التطبيقات بشكلٍ قسري

如果用户在搭载 Android 15 的设备上强行停止某个应用,系统会暂时停用该应用的所有 widget。这些 widget 会灰显,用户无法与它们互动。这是因为,从 Android 15 开始,当应用被强行停止时,系统会取消应用的所有待处理 intent。

系统会在用户下次启动应用时重新启用这些 widget。

如需了解详情,请参阅对软件包停止状态的更改

شريحة شريط حالة عرض الوسائط لتنبيه المستخدمين بشأن مشاركة الشاشة وبث المحتوى وتسجيله

优势和性能提升

检查您的应用是否受到影响

الميزات المتوقّفة نهائيًا

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

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