پلتفرم اندروید ۱۵ شامل تغییرات رفتاری است که ممکن است بر برنامه شما تأثیر بگذارد. تغییرات رفتاری زیر برای همه برنامهها هنگام اجرا در اندروید ۱۵، صرف نظر از targetSdkVersion ، اعمال میشود. شما باید برنامه خود را آزمایش کنید و سپس در صورت لزوم، آن را برای پشتیبانی صحیح از این موارد، در صورت لزوم، اصلاح کنید.
حتماً لیست تغییرات رفتاری که فقط روی برنامههای اندروید ۱۵ تأثیر میگذارند را نیز بررسی کنید.
قابلیتهای اصلی
اندروید ۱۵ قابلیتهای اصلی مختلف سیستم اندروید را تغییر داده یا گسترش میدهد.
تغییرات در وضعیت متوقف شدن بسته
软件包 FLAG_STOPPED 状态(用户可以通过在 AOSP build 中长按应用图标并选择“强制停止”来启用此状态)的用途一直是让应用保持在此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、将应用选择为动态壁纸等)来明确将应用从此状态移除。在 Android 15 中,我们更新了系统行为,使其与此预期行为保持一致。应用应仅通过直接或间接的用户操作从停止状态移除。
为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态移除时,系统会将 ACTION_BOOT_COMPLETED 广播传送到应用,以便应用有机会重新注册所有待处理 intent。
您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已进入停止状态。
پشتیبانی از صفحات با حجم ۱۶ کیلوبایت
从历史上看,Android 仅支持 4 KB 内存页面大小,这优化了系统内存性能,以适应 Android 设备通常拥有的平均总内存量。从 Android 15 开始,AOSP 支持配置为使用 16 KB 页面大小的设备(16 KB 设备)。如果您的应用直接或通过 SDK 间接使用任何 NDK 库,则需要重新构建应用,才能在这些 16 KB 设备上运行。
随着设备制造商不断制造出具有更大物理内存 (RAM) 的设备,许多此类设备将采用 16 KB(最终甚至更大)的页面大小来优化设备性能。添加对 16 KB 页面大小设备的支持,可让您的应用在这些设备上运行,并帮助您的应用受益于相关的性能改进。如果不重新编译,应用将无法在未来 Android 版本的 16 KB 设备上运行。
为帮助您为应用添加支持,我们提供了相关指南,介绍了如何检查应用是否受到影响、如何重新构建应用(如果适用),以及如何使用模拟器(包括 Android 模拟器的 Android 15 系统映像)在 16 KB 环境中测试应用。
مزایا و دستاوردهای عملکرد
配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但系统和应用的性能也会得到各种提升:
- 缩短了系统内存压力时的应用启动时间:平均降低了 3.16%;对于我们测试的某些应用而言,改进幅度更大(最高可达 30%)
- 应用启动期间的功耗降低:平均降低了 4.56%
- 相机启动更快:热启动速度平均提高了 4.48%,冷启动速度平均提高了 6.60%
- 缩短了系统启动时间:平均缩短了 8%(约 950 毫秒)
这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。随着测试的继续进行,我们将进一步分析应用的潜在收益。
بررسی کنید که آیا برنامه شما تحت تأثیر قرار گرفته است
如果您的应用使用了任何原生代码,则应重新构建应用,使其支持 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 以将应用安装到用户的私密空间。为了让应用能够接收此隐式 intent,请在应用的清单文件中声明一个 <intent-filter>,并将 <category> 设为 CATEGORY_APP_MARKET。
فونت ایموجی مبتنی بر PNG حذف شد
我们移除了基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf),只保留了基于矢量的文件。从 Android 13(API 级别 33)开始,系统表情符号渲染程序使用的表情符号字体文件已从基于 PNG 的文件更改为基于矢量的文件。出于兼容性原因,系统在 Android 13 和 14 中保留了旧版字体文件,以便具有自己的字体渲染程序的应用在能够升级之前继续使用旧版字体文件。
如需检查您的应用是否受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件的引用。
您可以通过多种方式自适应应用:
- 使用平台 API 进行文本渲染。您可以将文本渲染到基于位图的
Canvas,并在必要时使用该Canvas获取原始图片。 - 为您的应用添加 COLRv1 字体支持。FreeType 开源库在 2.13.0 版及更高版本中支持 COLRv1。
- 作为最后的手段,您可以将旧版表情符号字体文件 (
NotoColorEmoji.ttf) 捆绑到 APK 中,但在这种情况下,您的应用将缺少最新的表情符号更新。如需了解详情,请参阅 Noto Emoji GitHub 项目页面。
حداقل نسخه SDK هدف از ۲۳ به ۲۴ افزایش یافت.
اندروید 15 بر اساس تغییراتی است که در اندروید 14 ایجاد شده است و این امنیت را بیشتر گسترش می دهد. در اندروید 15، برنامه هایی با targetSdkVersion کمتر از 24 قابل نصب نیستند. نیاز به برنامهها برای مطابقت با سطوح API مدرن به تضمین امنیت و حریم خصوصی بهتر کمک میکند.
بدافزارها اغلب سطوح پایینتر API را هدف قرار میدهند تا از حفاظتهای امنیتی و حریم خصوصی که در نسخههای اندروید بالاتر معرفی شدهاند دور بزنند. برای مثال، برخی از برنامههای بدافزار از targetSdkVersion 22 استفاده میکنند تا در معرض مدل مجوز زمان اجرا قرار نگیرند که در سال 2015 توسط Android 6.0 Marshmallow (سطح API 23) معرفی شد. این تغییر اندروید 15، جلوگیری از بهبود امنیت و حریم خصوصی را برای بدافزارها دشوارتر می کند. تلاش برای نصب برنامهای که سطح API پایینتری را هدف قرار میدهد منجر به عدم موفقیت در نصب میشود و پیامی مانند مورد زیر در Logcat ظاهر میشود:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
در دستگاههایی که به Android 15 ارتقا مییابند، هر برنامهای با targetSdkVersion کمتر از 24 نصب میشود.
اگر نیاز به آزمایش برنامه ای دارید که سطح API قدیمی را هدف قرار می دهد، از دستور ADB زیر استفاده کنید:
adb install --bypass-low-target-sdk-block FILENAME.apk
امنیت و حریم خصوصی
Android 15 اقدامات قوی را برای مبارزه با تقلب با رمز عبور یکبار مصرف (OTP) و محافظت از محتوای حساس کاربر، با تمرکز بر سختتر کردن سرویس شنونده اعلان و محافظتهای اشتراکگذاری صفحه نمایش، معرفی میکند. پیشرفتهای کلیدی شامل ویرایش OTPها از اعلانهای قابل دسترسی به برنامههای غیرقابل اعتماد، پنهان کردن اعلانها در حین اشتراکگذاری صفحه، و ایمن کردن فعالیتهای برنامه هنگام پست شدن OTP است. هدف این تغییرات حفظ محتوای حساس کاربر در برابر عوامل غیرمجاز است.
توسعه دهندگان برای اطمینان از سازگاری برنامه هایشان با تغییرات اندروید 15 باید از موارد زیر آگاه باشند:
ویرایش OTP
Android برنامههای غیرقابل اعتمادی که NotificationListenerService اجرا میکنند را از خواندن محتوای ویرایش نشده از اعلانهایی که در آن OTP شناسایی شده است، متوقف میکند. برنامههای مورد اعتماد مانند انجمنهای مدیریت دستگاه همراه از این محدودیتها مستثنی هستند.
حفاظت از اشتراک گذاری صفحه نمایش
- محتوای اعلان در طول جلسات اشتراکگذاری صفحه پنهان میشود تا حریم خصوصی کاربر حفظ شود. اگر برنامه
setPublicVersion()پیاده سازی کند، Android نسخه عمومی اعلان را نشان می دهد که به عنوان یک اعلان جایگزین در زمینه های ناامن عمل می کند. در غیر این صورت، محتوای اعلان بدون هیچ زمینه دیگری ویرایش می شود. - محتوای حساس مانند ورودی رمز عبور از بینندگان راه دور پنهان می شود تا از افشای اطلاعات حساس کاربر جلوگیری شود.
- فعالیتهای برنامههایی که در حین اشتراکگذاری صفحه نمایش، جایی که OTP شناسایی شده است، اعلان ارسال میکنند، پنهان میشوند. محتوای برنامه هنگام راه اندازی از نمایشگر راه دور پنهان می شود.
- علاوه بر شناسایی خودکار فیلدهای حساس اندروید، توسعهدهندگان میتوانند با استفاده از
setContentSensitivityکه در حین اشتراکگذاری صفحه نمایش از بینندگان راه دور پنهان میشود، بهطور دستی بخشهایی از برنامه خود را بهعنوان حساس علامتگذاری کنند. - توسعهدهندگان میتوانند گزینه غیرفعال کردن محافظتهای اشتراکگذاری صفحه را در زیر گزینههای توسعهدهنده تغییر دهند تا از محافظتهای اشتراکگذاری صفحه برای اهداف آزمایشی یا آزمایشی مستثنی شوند. ضبط کننده صفحه پیش فرض سیستم از این تغییرات مستثنی است، زیرا ضبط ها روی دستگاه باقی می مانند.
Android 15 اقدامات قوی را برای مبارزه با تقلب با رمز عبور یکبار مصرف (OTP) و محافظت از محتوای حساس کاربر، با تمرکز بر سختتر کردن سرویس شنونده اعلان و محافظتهای اشتراکگذاری صفحه نمایش، معرفی میکند. پیشرفتهای کلیدی شامل ویرایش OTPها از اعلانهای قابل دسترسی به برنامههای غیرقابل اعتماد، پنهان کردن اعلانها در حین اشتراکگذاری صفحه، و ایمن کردن فعالیتهای برنامه هنگام پست شدن OTP است. هدف این تغییرات حفظ محتوای حساس کاربر در برابر عوامل غیرمجاز است.
توسعه دهندگان برای اطمینان از سازگاری برنامه هایشان با تغییرات اندروید 15 باید از موارد زیر آگاه باشند:
ویرایش OTP
Android برنامههای غیرقابل اعتمادی که NotificationListenerService اجرا میکنند را از خواندن محتوای ویرایش نشده از اعلانهایی که در آن OTP شناسایی شده است، متوقف میکند. برنامههای مورد اعتماد مانند انجمنهای مدیریت دستگاه همراه از این محدودیتها مستثنی هستند.
حفاظت از اشتراک گذاری صفحه نمایش
- محتوای اعلان در طول جلسات اشتراکگذاری صفحه پنهان میشود تا حریم خصوصی کاربر حفظ شود. اگر برنامه
setPublicVersion()پیاده سازی کند، Android نسخه عمومی اعلان را نشان می دهد که به عنوان یک اعلان جایگزین در زمینه های ناامن عمل می کند. در غیر این صورت، محتوای اعلان بدون هیچ زمینه دیگری ویرایش می شود. - محتوای حساس مانند ورودی رمز عبور از بینندگان راه دور پنهان می شود تا از افشای اطلاعات حساس کاربر جلوگیری شود.
- فعالیتهای برنامههایی که در حین اشتراکگذاری صفحه نمایش، جایی که OTP شناسایی شده است، اعلان ارسال میکنند، پنهان میشوند. محتوای برنامه هنگام راه اندازی از نمایشگر راه دور پنهان می شود.
- علاوه بر شناسایی خودکار فیلدهای حساس اندروید، توسعهدهندگان میتوانند با استفاده از
setContentSensitivityکه در حین اشتراکگذاری صفحه نمایش از بینندگان راه دور پنهان میشود، بهطور دستی بخشهایی از برنامه خود را بهعنوان حساس علامتگذاری کنند. - توسعهدهندگان میتوانند گزینه غیرفعال کردن محافظتهای اشتراکگذاری صفحه را در زیر گزینههای توسعهدهنده تغییر دهند تا از محافظتهای اشتراکگذاری صفحه برای اهداف آزمایشی یا آزمایشی مستثنی شوند. ضبط کننده صفحه پیش فرض سیستم از این تغییرات مستثنی است، زیرا ضبط ها روی دستگاه باقی می مانند.
دوربین و رسانه
اندروید ۱۵ تغییرات زیر را در رفتار دوربین و رسانه برای همه برنامهها ایجاد میکند.
پخش مستقیم و آفلود صدا، آهنگهای صوتی مستقیم یا آفلود باز قبلی را در صورت رسیدن به محدودیت منابع، نامعتبر میکند.
在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack。
从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack 对象失效,以防止执行新轨道请求。
(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)
تجربه کاربری و رابط کاربری سیستم
اندروید ۱۵ شامل تغییراتی است که برای ایجاد یک تجربه کاربری سازگارتر و شهودیتر در نظر گرفته شدهاند.
انیمیشنهای پیشبینیکنندهی بازگشت برای برنامههایی که این قابلیت را انتخاب کردهاند، فعال شده است.
با شروع اندروید 15، گزینه توسعه دهنده برای انیمیشن های پیش بینی کننده پشت حذف شده است. اکنون انیمیشنهای سیستمی مانند بازگشت به خانه، تکلیف متقابل و فعالیت متقابل برای برنامههایی ظاهر میشوند که به طور کامل یا در سطح فعالیت در ژست بازگشت پیشبینیکننده شرکت کردهاند . اگر برنامه شما تحت تأثیر قرار گرفته است، اقدامات زیر را انجام دهید:
- مطمئن شوید که برنامه شما به درستی منتقل شده است تا از ژست بازگشت پیش بینی کننده استفاده کنید.
- اطمینان حاصل کنید که انتقال قطعه شما با ناوبری پیشبینی کننده به عقب کار میکند.
- از انتقال انیمیشن و فریمورک دور شوید و به جای آن از انتقال انیماتور و اندرویدکس استفاده کنید.
- از پشتههایی که
FragmentManagerاز آنها اطلاعی ندارد، مهاجرت کنید. به جای آن از پشته های پشته ای استفاده کنید که توسطFragmentManagerیا مؤلفه Navigation مدیریت می شوند.
ابزارکها هنگام توقف اجباری برنامه توسط کاربر غیرفعال میشوند
如果用户在搭载 Android 15 的设备上强制停止应用,系统会暂时停用该应用的所有微件。这些 widget 会灰显,用户无法与其互动。这是因为,从 Android 15 开始,当系统强制停止应用时,会取消应用的所有待处理 intent。
系统会在用户下次启动应用时重新启用这些微件。
如需了解详情,请参阅对软件包停止状态的更改。
تراشه نوار وضعیت نمایش رسانه، کاربران را از اشتراکگذاری، پخش و ضبط صفحه نمایش مطلع میکند.
بهرهبرداریهای پیشبینی صفحه، دادههای خصوصی کاربر مانند اطلاعات مالی را در معرض دید کاربران قرار میدهند، زیرا کاربران متوجه نمیشوند که صفحه دستگاهشان به اشتراک گذاشته میشود.
برای برنامههایی که روی دستگاههای دارای Android 15 QPR1 یا بالاتر اجرا میشوند، یک تراشه نوار وضعیت که بزرگ و برجسته است، به کاربران هشدار میدهد که هر گونه نمایش صفحه نمایش در حال پیشرفت را نشان دهند. کاربران میتوانند روی تراشه ضربه بزنند تا از اشتراکگذاری، پخش یا ضبط صفحه نمایش خود جلوگیری کنند. همچنین، با قفل شدن صفحه نمایش دستگاه، نمایش صفحه به طور خودکار متوقف می شود.

بررسی کنید که آیا برنامه شما تحت تأثیر قرار گرفته است
به طور پیشفرض، برنامه شما شامل تراشه نوار وضعیت است و بهطور خودکار نمایش صفحه نمایش را با فعال شدن صفحه قفل به حالت تعلیق در میآورد.
برای کسب اطلاعات بیشتر درباره نحوه آزمایش برنامه خود برای این موارد استفاده، به تراشه نوار وضعیت و توقف خودکار مراجعه کنید.
محدودیتهای دسترسی به شبکه در پسزمینه
在 Android 15 中,如果应用在有效的进程生命周期之外启动网络请求,则会收到异常。通常是 UnknownHostException 或其他与套接字相关的 IOException。在有效生命周期之外发生的网络请求通常是因为应用在不再活跃后,不知不觉地继续发出网络请求。
为缓解此异常,请使用生命周期感知型组件,确保您的网络请求具有生命周期感知功能,并在离开有效的进程生命周期时取消。如果您非常重视即使用户离开应用也要发出网络请求,请考虑使用 WorkManager 调度网络请求,或使用前台服务继续执行对用户可见的任务。
منسوخشدهها
با هر نسخه، ممکن است APIهای خاص اندروید منسوخ شوند یا نیاز به اصلاح داشته باشند تا تجربه بهتری برای توسعهدهندگان فراهم شود یا از قابلیتهای جدید پلتفرم پشتیبانی کنند. در این موارد، ما رسماً APIهای منسوخ را منسوخ میکنیم و توسعهدهندگان را به سمت APIهای جایگزین هدایت میکنیم تا به جای آنها استفاده کنند.
منسوخ شدن به این معنی است که ما پشتیبانی رسمی از APIها را پایان دادهایم، اما آنها همچنان برای توسعهدهندگان در دسترس خواهند بود. برای کسب اطلاعات بیشتر در مورد منسوخ شدنهای قابل توجه در این نسخه از اندروید، به صفحه منسوخ شدنها مراجعه کنید.