يتضمّن الإصدار 15 من نظام التشغيل Android تغييرات في السلوك قد تؤثّر في تطبيقك.
تنطبق تغييرات السلوك التالية على جميع التطبيقات عند تشغيلها على الإصدار 15 من نظام التشغيل Android،
بغض النظر عن targetSdkVersion
. عليك اختبار تطبيقك ثم تعديله حسب الحاجة ليتوافق مع هذه الميزات بشكل صحيح، حيثما ينطبق ذلك.
احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثّر فقط في التطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android.
الوظيفة الأساسية
يعدّل نظام التشغيل Android 15 العديد من الإمكانات الأساسية لنظام Android أو يوسّع نطاقها.
التغييرات على حالة إيقاف الحزمة
إنّ الغرض من حالة الحزمة FLAG_STOPPED
(التي يمكن للمستخدمين
التفاعل معها في إصدارات AOSP من خلال الضغط مع الاستمرار على رمز التطبيق واختيار "إيقاف
بالقوة") هو إبقاء التطبيقات في هذه الحالة إلى أن يزيل المستخدم
التطبيق من هذه الحالة صراحةً من خلال تشغيل التطبيق مباشرةً أو interacted with the app (من خلال لوحة المشاركة أو التطبيق المصغر، واختيار التطبيق
كخلفية حية، وما إلى ذلك). في Android 15، عدّلنا سلوك
النظام ليتوافق مع هذا السلوك المقصود. يجب عدم إزالة التطبيقات
من حالة الإيقاف إلا من خلال إجراء مباشر أو غير مباشر من المستخدم.
لدعم السلوك المقصود، بالإضافة إلى القيود الحالية، يُلغي
النظام أيضًا جميع الطلبات التي في انتظار المراجعة عندما يدخل التطبيق في حالة
الإيقاف على جهاز يعمل بنظام التشغيل Android 15. عندما تزيل إجراءات المستخدم
التطبيق من الحالة "متوقف"، يتم إرسال البث ACTION_BOOT_COMPLETED
إلى التطبيق، ما يمنح التطبيق فرصة لإعادة تسجيل أي
نوايا في انتظار المراجعة.
يمكنك استدعاء الأسلوب الجديد
ApplicationStartInfo.wasForceStopped()
للتأكّد مما إذا تم وضع التطبيق في حالة الإيقاف.
التوافق مع صفحات بحجم 16 كيلوبايت
في السابق، كان نظام التشغيل Android يتيح فقط صفحات الذاكرة بحجم 4 كيلوبايت، ما ساعد في تحسين أداء ذاكرة النظام بما يتناسب مع إجمالي مساحة الذاكرة التي كانت تتوفّر عادةً في أجهزة Android. بدءًا من الإصدار 15 من نظام التشغيل Android، يتيح مشروع Android مفتوح المصدر (AOSP) استخدام الأجهزة التي تم ضبطها لاستخدام حجم صفحة يبلغ 16 كيلوبايت (أجهزة 16 كيلوبايت). إذا كان تطبيقك يستخدم أي مكتبات NDK، سواء بشكل مباشر أو غير مباشر من خلال حزمة تطوير برامج (SDK)، عليك إعادة إنشاء تطبيقك لكي يعمل على هذه الأجهزة التي تستخدم صفحات ذاكرة بحجم 16 كيلوبايت.
مع استمرار الشركات المصنّعة للأجهزة في تصميم أجهزة تتضمّن كميات أكبر من الذاكرة الفعلية (RAM)، ستستخدم العديد من هذه الأجهزة أحجام صفحات تبلغ 16 كيلوبايت (وأكبر في النهاية) لتحسين أداء الجهاز. تتيح إضافة دعم للأجهزة التي تستخدم صفحات بحجم 16 كيلوبايت تشغيل تطبيقك على هذه الأجهزة، كما تساعد تطبيقك في الاستفادة من التحسينات المرتبطة بالأداء. وبدون إعادة تجميع، لن تعمل التطبيقات على الأجهزة التي تستخدم صفحات الذاكرة بحجم 16 كيلوبايت في إصدارات Android المستقبلية.
لمساعدتك في إضافة إمكانية استخدام تطبيقك، قدّمنا إرشادات حول كيفية التحقّق مما إذا كان تطبيقك سيتأثر، وكيفية إعادة إنشاء تطبيقك (إذا كان ذلك منطبقًا)، وكيفية اختبار تطبيقك في بيئة بحجم 16 كيلوبايت باستخدام المحاكيات (بما في ذلك صور نظام Android 15 لمحاكي Android).
Benefits and performance gains
配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但系统和应用的性能也会得到各种提升:
- 缩短了系统内存压力时的应用启动时间:平均降低了 3.16%;对于我们测试的某些应用而言,改进幅度更大(最高可达 30%)
- 应用启动期间的功耗降低:平均降低了 4.56%
- 相机启动更快:热启动速度平均提高了 4.48%,冷启动速度平均提高了 6.60%
- 缩短了系统启动时间:平均缩短了 8%(约 950 毫秒)
这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。随着测试的继续进行,我们将进一步分析应用的潜在收益。
Check if your app is impacted
如果您的应用使用了任何原生代码,则应重新构建应用,使其支持 16 KB 设备。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码,然后检查您找到的任何共享库的 ELF 段对齐情况。Android Studio 还提供了一些功能,可帮助您自动检测对齐问题。
如果您的应用仅使用以 Java 或 Kotlin 编程语言编写的代码(包括所有库或 SDK),则该应用已支持 16 KB 设备。不过,我们建议您在 16 KB 环境中测试应用,以验证应用行为是否出现意外的回归。
التغييرات المطلوبة لكي تتوافق بعض التطبيقات مع المساحة الخاصّة
المساحة الخاصة هي ميزة جديدة في Android 15 تتيح للمستخدمين إنشاء مساحة منفصلة على أجهزتهم للحفاظ على خصوصية التطبيقات الحسّاسة من خلال طبقة مصادقة إضافية. بما أنّ التطبيقات في المساحة الخاصة لها إذن وصول محدود، يجب أن تتّخذ بعض أنواع التطبيقات خطوات إضافية لتتمكّن من رؤية التطبيقات في المساحة الخاصة للمستخدم والتفاعل معها.
جميع التطبيقات
بما أنّ التطبيقات في المساحة الخاصة يتم الاحتفاظ بها في ملف شخصي منفصل للمستخدم، على غرار الملفات الشخصية للعمل، يجب ألا تفترض التطبيقات أنّ أي نُسخ مثبَّتة من تطبيقها غير المضمّنة في الملف الشخصي الرئيسي موجودة في الملف الشخصي للعمل. إذا كان تطبيقك يتضمّن منطقًا مرتبطًا بتطبيقات الملف الشخصي للعمل يستند إلى هذا الافتراض، عليك تعديل هذا المنطق.
تطبيقات طبية
عندما يقفل المستخدم المساحة الخاصة، يتم إيقاف جميع التطبيقات في المساحة الخاصة، ولا يمكن لهذه التطبيقات تنفيذ الأنشطة في المقدّمة أو الخلفية، بما في ذلك عرض الإشعارات. قد يؤثر هذا السلوك بشكلٍ كبير في استخدام التطبيقات الطبية المثبَّتة في المساحة الخاصة و عملها.
تُحذّر تجربة إعداد المساحة الخاصة المستخدمين من أنّ المساحة الخاصة ليست مناسبة للتطبيقات التي تحتاج إلى تنفيذ أنشطة مهمة في المقدّمة أو في الخلفية، مثل عرض إشعارات من التطبيقات الطبية. ومع ذلك، لا يمكن للتطبيقات تحديد ما إذا كان يتم استخدامها في المساحة الخاصة أم لا، لذلك لا يمكنها عرض تحذير للمستخدم في هذه الحالة.
لهذه الأسباب، إذا كنت تطوّر تطبيقًا طبيًا، عليك مراجعة كيفية تأثير هذه الميزة في تطبيقك واتّخاذ الإجراءات المناسبة، مثل إبلاغ المستخدمين بعدم تثبيت تطبيقك في المساحة الخاصة، لتجنّب إيقاف وظائف التطبيق الحيوية.
تطبيقات مشغّل التطبيقات
إذا كنت تطوّر تطبيق مشغّل، عليك إجراء ما يلي قبل أن تصبح التطبيقات في المساحة الخاصة مرئية:
- يجب تعيين تطبيقك كتطبيق مشغّل تلقائي للجهاز، أي أن يكون لديه الدور
ROLE_HOME
. - يجب أن يُعلن تطبيقك عن
ACCESS_HIDDEN_PROFILES
الإذن العادي في ملف بيان تطبيقك.
على تطبيقات المشغّلات التي تذكر إذن ACCESS_HIDDEN_PROFILES
التعامل مع
حالات استخدام المساحة الخاصة التالية:
- يجب أن يتضمّن تطبيقك حاوية مشغِّل تطبيقات منفصلة للتطبيقات المثبَّتة في
المساحة الخاصة. استخدِم طريقة
getLauncherUserInfo()
لتحديد نوع الملف الشخصي للمستخدم الذي تتم معالجته. - يجب أن يتمكّن المستخدم من إخفاء حاوية المساحة الخاصة وعرضها.
- يجب أن يتمكّن المستخدم من قفل حاوية المساحة الخاصة وفتح قفلها. استخدِم
requestQuietModeEnabled()
لقفل المساحة الخاصة (بمروّرtrue
) أو فتح قفلها (بمروّرfalse
). عندما تكون المساحة الخاصة مقفلة، يجب ألا تظهر أي تطبيقات في حاوية المساحة الخاصة أو يمكن العثور عليها من خلال آليات مثل البحث. يجب أن يُسجِّل تطبيقك جهاز استقبال لبثَّي
ACTION_PROFILE_AVAILABLE
وACTION_PROFILE_UNAVAILABLE
وتعديل واجهة المستخدم في تطبيقك عند تغيُّر حالة حاوية المساحة الخاصة (مقفلة أو غير مقفلة). يتضمّن كلا البثَّينEXTRA_USER
، والذي يمكن لتطبيقك استخدامه للإشارة إلى مستخدم الملف الشخصي الخاص.يمكنك أيضًا استخدام طريقة
isQuietModeEnabled()
للتحقّق مما إذا كان الملف الشخصي للمساحة الخاصة مقفلًا أم لا.
تطبيقات متجر التطبيقات
تتضمّن المساحة الخاصة زر "تثبيت التطبيقات" الذي يطلق نية ضمنية
لتثبيت التطبيقات في المساحة الخاصة للمستخدم. لكي يتلقّى تطبيقك
هذا الإجراء الضمني، يجب إدراج <intent-filter>
في ملف بيان تطبيقك مع <category>
من
CATEGORY_APP_MARKET
.
تمت إزالة خط رموز الإيموجي المستند إلى PNG
تم
إزالة ملف خط الرموز التعبيرية القديم المستنِد إلى تنسيق PNG (NotoColorEmojiLegacy.ttf
)، ولم يبق سوى الملف المستنِد إلى تنسيق ملفات المتجهات. بدءًا من الإصدار Android 13 (المستوى 33 من واجهة برمجة التطبيقات)، تغيّر ملف خط الرموز التعبيرية المستخدَم من قِبل أداة عرض الرموز التعبيرية في النظام من ملف يستند إلى PNG إلى ملف يستند إلى شكل مسطّح. احتفظ النظام بملف الخط القديم في Android 13 و14 لأسباب تتعلق بالتوافق، حتى تتمكّن التطبيقات التي تستخدم أدوات عرض الخطوط الخاصة بها من مواصلة استخدام ملف الخط القديم إلى أن تتمكّن من الترقية.
للتحقّق مما إذا كان تطبيقك متأثّرًا، ابحث في رمز تطبيقك عن إشارات إلى ملف
NotoColorEmojiLegacy.ttf
.
يمكنك اختيار تكييف تطبيقك بعدة طرق:
- استخدام واجهات برمجة تطبيقات النظام الأساسي لعرض النص يمكنك عرض النص على
Canvas
مستند مستنِد إلى رسومات نقطية، واستخدامه للحصول على صورة أولية إذا لزم الأمر. - أضِف ميزة استخدام خطوط COLRv1 إلى تطبيقك. تتيح مكتبة FreeType المفتوحة المصدر استخدام خطوط COLRv1 في الإصدار 2.13.0 والإصدارات الأحدث.
- كحل أخير، يمكنك تجميع ملف خط الرموز التعبيرية القديم
(
NotoColorEmoji.ttf
) في حزمة APK، ولكن في هذه الحالة سيفتقد تطبيقك أحدث تعديلات الرموز التعبيرية. للحصول على مزيد من المعلومات، يُرجى الاطّلاع على صفحة مشروع Noto Emoji على 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 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.
Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:
OTP Redaction
Android will stop untrusted apps that implement a
NotificationListenerService
from reading unredacted content
from notifications where an OTP has been detected. Trusted apps such as
companion device manager associations are exempt from these restrictions.
Screenshare Protection
- Notification content is hidden during screen sharing sessions to preserve
the user's privacy. If the app implements
setPublicVersion()
, Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context. - Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
- Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
- Beyond Android's automatic identification of sensitive fields, developers
can manually mark parts of their app as sensitive using
setContentSensitivity
, which is hidden from remote viewers during screenshare. - Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.
الكاميرا والوسائط
يُجري نظام التشغيل Android 15 التغييرات التالية على سلوك الكاميرا والوسائط في جميع التطبيقات.
يؤدي تشغيل الصوت مباشرةً أو إيقافه إلى إبطال المقاطع الصوتية التي تم فتحها سابقًا مباشرةً أو إيقافها عند بلوغ حدود الموارد
在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack
。
从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack
对象失效,以防止执行新轨道请求。
(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)
تجربة المستخدم وواجهة مستخدم النظام
يتضمّن Android 15 بعض التغييرات التي تهدف إلى توفير تجربة مستخدم أكثر اتساقًا وسهولة.
تفعيل الصور المتحركة لإيماءة الرجوع إلى الخلف التنبؤية للتطبيقات التي وافقت على استخدامها
Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:
- Ensure that your app has been properly migrated to use the predictive back gesture.
- Ensure that your fragment transitions work with predictive back navigation.
- Migrate away from animation and framework transitions and use animator and androidx transitions instead.
- Migrate away from back stacks that
FragmentManager
doesn't know about. Use back stacks managed byFragmentManager
or by the Navigation component instead.
إيقاف التطبيقات المصغّرة عند إيقاف المستخدم تطبيقًا بالقوة
إذا أوقف مستخدم تطبيقًا على جهاز يعمل بنظام Android 15 بشكلٍ قسري، سيؤدي ذلك إلى إيقاف جميع التطبيقات المصغّرة للتطبيق مؤقتًا. تكون التطبيقات المصغّرة غير مفعّلة، ولا يمكن للمستخدِم التفاعل معها. ويعود السبب في ذلك إلى أنّه بدءًا من Android 15، يُلغي النظام جميع نوايا التطبيق التي في انتظار المراجعة عند فرض إغلاق التطبيق.
ويعيد النظام تفعيل هذه التطبيقات المصغّرة في المرة التالية التي يشغّل فيها المستخدم التطبيق.
لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في حالة إيقاف الحزمة.
تنبّه شريحة شريط حالة عرض الوسائط المستخدمين إلى مشاركة الشاشة وإرسال المحتوى وتسجيله
屏幕投影漏洞会泄露用户的私密数据(例如财务信息),因为用户不知道自己的设备屏幕正在共享。
对于搭载 Android 15 QPR1 或更高版本的设备上运行的应用,系统会在状态栏中显示一个醒目的大条状标签,以提醒用户正在进行的任何屏幕投影。用户可以点按该条状标签,停止共享、投放或录制其屏幕。此外,当设备屏幕锁定时,屏幕投影会自动停止。

Check if your app is impacted
By default, your app includes the status bar chip and automatically suspends screen projection when the lock screen activates.
To learn more about how to test your app for these use cases, see Status bar chip and auto stop.
قيود الوصول إلى الشبكة في الخلفية
在 Android 15 中,如果应用在有效的进程生命周期之外启动网络请求,则会收到异常。通常是 UnknownHostException
或其他与套接字相关的 IOException
。在有效生命周期之外发生的网络请求通常是因为应用在不再活跃后,不知不觉地继续发出网络请求。
为缓解此异常,请使用生命周期感知型组件,确保您的网络请求具有生命周期感知功能,并在离开有效的进程生命周期时取消。如果您非常重视即使用户离开应用也要发出网络请求,请考虑使用 WorkManager 调度网络请求,或使用前台服务继续执行对用户可见的任务。
الميزات التي سيتم إيقافها نهائيًا
مع كل إصدار، قد تصبح واجهات برمجة تطبيقات معيّنة في Android قديمة أو تحتاج إلى إعادة تصميم لتوفير تجربة أفضل للمطوّرين أو إتاحة إمكانات جديدة على النظام الأساسي. في هذه الحالات، نوقف نهائيًا واجهات برمجة التطبيقات القديمة ونوجّه المطوّرين إلى استخدام واجهات برمجة تطبيقات بديلة.
يعني الإيقاف النهائي أنّنا أوقفنا الدعم الرسمي لواجهات برمجة التطبيقات، ولكن ستظل متاحة للمطوّرين. لمزيد من المعلومات حول عمليات الإيقاف النهائي المهمة في هذا الإصدار من Android، يمكنك الاطّلاع على صفحة عمليات الإيقاف النهائي.