تغییرات رفتار: همه برنامه ها

پلتفرم اندروید ۱۵ شامل تغییرات رفتاری است که ممکن است بر برنامه شما تأثیر بگذارد. تغییرات رفتاری زیر برای همه برنامه‌ها هنگام اجرا در اندروید ۱۵، صرف نظر از targetSdkVersion ، اعمال می‌شود. شما باید برنامه خود را آزمایش کنید و سپس در صورت لزوم، آن را برای پشتیبانی صحیح از این موارد، در صورت لزوم، اصلاح کنید.

حتماً لیست تغییرات رفتاری که فقط روی برنامه‌های اندروید ۱۵ تأثیر می‌گذارند را نیز بررسی کنید.

عملکرد اصلی

اندروید ۱۵ قابلیت‌های اصلی مختلف سیستم اندروید را تغییر داده یا گسترش می‌دهد.

تغییرات در وضعیت متوقف شدن بسته

هدف از وضعیت بسته FLAG_STOPPED (که کاربران می توانند با فشار طولانی یک نماد برنامه و انتخاب "توقف اجباری" در ساخت های AOSP شرکت کنند) همیشه این بوده است که برنامه ها را در این حالت نگه دارد تا زمانی که کاربر به طور مستقیم برنامه را از این حالت خارج کند. راه‌اندازی برنامه یا تعامل غیرمستقیم با برنامه (از طریق اشتراک‌گذاری یا ویجت، انتخاب برنامه به عنوان تصویر زمینه زنده و غیره). در اندروید 15، رفتار سیستم را به‌روزرسانی کرده‌ایم تا با این رفتار مورد نظر هماهنگ شود. برنامه ها فقط باید از طریق اقدام مستقیم یا غیرمستقیم کاربر از حالت توقف حذف شوند.

برای پشتیبانی از رفتار در نظر گرفته شده، علاوه بر محدودیت‌های موجود، هنگامی که برنامه در دستگاه دارای Android 15 به حالت توقف وارد می‌شود، سیستم علاوه بر محدودیت‌های موجود، تمام اهداف معلق را نیز لغو می‌کند. هنگامی که اقدامات کاربر برنامه را از حالت توقف خارج می‌کند، پخش ACTION_BOOT_COMPLETED انجام می‌شود. به برنامه تحویل داده می شود و فرصتی برای ثبت مجدد هرگونه نیات معلق فراهم می کند.

می‌توانید متد جدید ApplicationStartInfo.wasForceStopped() را فراخوانی کنید تا تأیید کنید که آیا برنامه در حالت توقف قرار گرفته است یا خیر.

پشتیبانی از صفحات با حجم ۱۶ کیلوبایت

Historically, Android has only supported 4 KB memory page sizes, which has optimized system memory performance for the average amount of total memory that Android devices have typically had. Beginning with Android 15, AOSP supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.

As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will adopt 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB page size devices enables your app to run on these devices and helps your app benefit from the associated performance improvements. Without recompiling, apps won't work on 16 KB devices in future Android releases.

To help you add support for your app, we've provided guidance on how to check if your app is impacted, how to rebuild your app (if applicable), and how to test your app in a 16 KB environment using emulators (including Android 15 system images for the Android Emulator).

مزایا و دستاوردهای عملکرد

دستگاه هایی که با اندازه صفحه 16 کیلوبایت پیکربندی شده اند به طور متوسط ​​کمی از حافظه بیشتری استفاده می کنند، اما بهبودهای عملکردی مختلفی را برای سیستم و برنامه ها نیز به دست می آورند:

  • زمان‌های راه‌اندازی برنامه کمتر زمانی که سیستم تحت فشار حافظه است: به طور متوسط ​​3.16٪ کمتر، با بهبودهای قابل توجه (تا 30٪) برای برخی از برنامه‌هایی که آزمایش کردیم.
  • کاهش مصرف انرژی در حین راه اندازی برنامه: به طور متوسط ​​4.56٪ کاهش
  • راه‌اندازی سریع‌تر دوربین: به طور متوسط ​​4.48٪ سریع‌تر استارت‌های گرم و 6.60٪ سریع‌تر شروع سرد.
  • بهبود زمان بوت سیستم: به طور متوسط ​​8٪ (تقریباً 950 میلی ثانیه) بهبود یافته است.

این پیشرفت‌ها بر اساس آزمایش اولیه ما هستند و نتایج روی دستگاه‌های واقعی احتمالاً متفاوت خواهد بود. در ادامه آزمایش خود، تجزیه و تحلیل بیشتری از دستاوردهای بالقوه برای برنامه ها ارائه خواهیم کرد.

بررسی کنید که آیا برنامه شما تحت تأثیر قرار گرفته است

If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present and then check the alignment of ELF segments for any shared libraries that you find. Android Studio also provides features that help you to automatically detect alignment issues.

If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.

تغییرات لازم برای پشتیبانی برخی از برنامه‌ها از فضای خصوصی

Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.

All apps

Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.

Medical apps

When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.

The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.

For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. Your app must declare the ACCESS_HIDDEN_PROFILES normal permission in your app's manifest file.

Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle the following private space use cases:

  1. Your app must have a separate launcher container for apps installed in the private space. Use the getLauncherUserInfo() method to determine which type of user profile is being handled.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the ACTION_PROFILE_AVAILABLE and ACTION_PROFILE_UNAVAILABLE broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts include EXTRA_USER, which your app can use to refer to the private profile user.

    You can also use the isQuietModeEnabled() method to check whether the private space profile is locked or not.

App store apps

The private space includes an "Install Apps" button that launches an implicit intent to install apps into the user's private space. In order for your app to receive this implicit intent, declare an <intent-filter> in your app's manifest file with a <category> of CATEGORY_APP_MARKET.

فونت ایموجی مبتنی بر PNG حذف شد

The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf) has been removed, leaving just the vector-based file. Beginning with Android 13 (API level 33), the emoji font file used by the system emoji renderer changed from a PNG-based file to a vector based file. The system retained the legacy font file in Android 13 and 14 for compatibility reasons, so that apps with their own font renderers could continue to use the legacy font file until they were able to upgrade.

To check if your app is affected, search your app's code for references to the NotoColorEmojiLegacy.ttf file.

You can choose to adapt your app in a number of ways:

  • Use platform APIs for text rendering. You can render text to a bitmap-backed Canvas and use that to get a raw image if necessary.
  • Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
  • As a last resort, you can bundle the legacy emoji font file (NotoColorEmoji.ttf) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.

حداقل نسخه SDK هدف از ۲۳ به ۲۴ افزایش یافت.

Android 15 builds on the the changes that were made in Android 14 and extends this security further. In Android 15, apps with a targetSdkVersion lower than 24 can't be installed. Requiring apps to meet modern API levels helps to ensure better security and privacy.

Malware often targets lower API levels in order to bypass security and privacy protections that have been introduced in higher Android versions. For example, some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API level 23). This Android 15 change makes it harder for malware to avoid security and privacy improvements. Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

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

On devices upgrading to Android 15, any apps with a targetSdkVersion lower than 24 remain installed.

If you need to test an app targeting an older API level, use the following ADB command:

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 که در حین اشتراک‌گذاری صفحه نمایش از بینندگان راه دور پنهان می‌شود، به‌طور دستی بخش‌هایی از برنامه خود را به‌عنوان حساس علامت‌گذاری کنند.
  • توسعه‌دهندگان می‌توانند گزینه غیرفعال کردن محافظت‌های اشتراک‌گذاری صفحه را در زیر گزینه‌های توسعه‌دهنده تغییر دهند تا از محافظت‌های اشتراک‌گذاری صفحه برای اهداف آزمایشی یا آزمایشی مستثنی شوند. ضبط کننده صفحه پیش فرض سیستم از این تغییرات مستثنی است، زیرا ضبط ها روی دستگاه باقی می مانند.

دوربین و رسانه

اندروید ۱۵ تغییرات زیر را در رفتار دوربین و رسانه برای همه برنامه‌ها ایجاد می‌کند.

پخش مستقیم و آفلود صدا، آهنگ‌های صوتی مستقیم یا آفلود باز قبلی را در صورت رسیدن به محدودیت منابع، نامعتبر می‌کند.

Before Android 15, if an app requested direct or offload audio playback while another app was playing audio and the resource limits were reached, the app would fail to open a new AudioTrack.

Beginning with Android 15, when an app requests direct or offload playback and the resource limits are reached, the system invalidates any currently open AudioTrack objects which prevent fulfilling the new track request.

(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)

تجربه کاربری و رابط کاربری سیستم

اندروید ۱۵ شامل تغییراتی است که برای ایجاد یک تجربه کاربری سازگارتر و شهودی‌تر در نظر گرفته شده‌اند.

انیمیشن‌های پیش‌بینی‌کننده‌ی بازگشت برای برنامه‌هایی که این قابلیت را انتخاب کرده‌اند، فعال شده است.

با شروع اندروید 15، گزینه توسعه دهنده برای انیمیشن های پیش بینی کننده پشت حذف شده است. اکنون انیمیشن‌های سیستمی مانند بازگشت به خانه، تکلیف متقابل و فعالیت متقابل برای برنامه‌هایی ظاهر می‌شوند که به طور کامل یا در سطح فعالیت در ژست بازگشت پیش‌بینی‌کننده شرکت کرده‌اند . اگر برنامه شما تحت تأثیر قرار گرفته است، اقدامات زیر را انجام دهید:

  • مطمئن شوید که برنامه شما به درستی منتقل شده است تا از ژست بازگشت پیش بینی کننده استفاده کنید.
  • اطمینان حاصل کنید که انتقال قطعه شما با ناوبری پیش‌بینی کننده به عقب کار می‌کند.
  • از انتقال انیمیشن و فریمورک دور شوید و به جای آن از انتقال انیماتور و اندرویدکس استفاده کنید.
  • از پشته‌هایی که FragmentManager از آن‌ها اطلاعی ندارد، مهاجرت کنید. به جای آن از پشته های پشته ای استفاده کنید که توسط FragmentManager یا مؤلفه Navigation مدیریت می شوند.

ابزارک‌ها هنگام توقف اجباری برنامه توسط کاربر غیرفعال می‌شوند

اگر کاربر به زور برنامه ای را در دستگاهی که اندروید 15 دارد متوقف کند، سیستم به طور موقت تمام ویجت های برنامه را غیرفعال می کند. ویجت ها خاکستری هستند و کاربر نمی تواند با آنها تعامل داشته باشد. این به این دلیل است که با شروع اندروید 15، سیستم تمام اهداف معلق برنامه را با توقف اجباری برنامه لغو می کند.

دفعه بعد که کاربر برنامه را راه اندازی می کند، سیستم دوباره آن ویجت ها را فعال می کند.

برای اطلاعات بیشتر، به تغییرات وضعیت بسته بسته مراجعه کنید.

تراشه نوار وضعیت نمایش رسانه، کاربران را از اشتراک‌گذاری، پخش و ضبط صفحه نمایش مطلع می‌کند.

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared.

For apps running on devices with Android 15 QPR1 or higher, a status bar chip that is large and prominent alerts users to any in‑progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded. Also, screen projection automatically stops when the device screen is locked.

تراشه نوار وضعیت برای اشتراک‌گذاری صفحه نمایش، ارسال محتوا و ضبط.

بررسی کنید که آیا برنامه شما تحت تأثیر قرار گرفته است

به طور پیش‌فرض، برنامه شما شامل تراشه نوار وضعیت است و به‌طور خودکار نمایش صفحه نمایش را با فعال شدن صفحه قفل به حالت تعلیق در می‌آورد.

برای کسب اطلاعات بیشتر درباره نحوه آزمایش برنامه خود برای این موارد استفاده، به تراشه نوار وضعیت و توقف خودکار مراجعه کنید.

محدودیت‌های دسترسی به شبکه در پس‌زمینه

In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.

To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.

منسوخ‌شده‌ها

با هر نسخه، ممکن است APIهای خاص اندروید منسوخ شوند یا نیاز به اصلاح داشته باشند تا تجربه بهتری برای توسعه‌دهندگان فراهم شود یا از قابلیت‌های جدید پلتفرم پشتیبانی کنند. در این موارد، ما رسماً APIهای منسوخ را منسوخ می‌کنیم و توسعه‌دهندگان را به سمت APIهای جایگزین هدایت می‌کنیم تا به جای آنها استفاده کنند.

منسوخ شدن به این معنی است که ما پشتیبانی رسمی از APIها را پایان داده‌ایم، اما آنها همچنان برای توسعه‌دهندگان در دسترس خواهند بود. برای کسب اطلاعات بیشتر در مورد منسوخ شدن‌های قابل توجه در این نسخه از اندروید، به صفحه منسوخ شدن‌ها مراجعه کنید.