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

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

مطمئن شوید که فهرستی از تغییرات رفتاری که فقط بر برنامه‌هایی که اندروید 15 را هدف قرار می‌دهند را نیز بررسی کنید.

عملکرد اصلی

اندروید 15 قابلیت های اصلی مختلف سیستم اندروید را اصلاح یا گسترش می دهد.

تغییرات در وضعیت بسته

The intention of the package FLAG_STOPPED state (which users can engage in AOSP builds by long-pressing an app icon and selecting "Force Stop") has always been to keep apps in this state until the user explicitly removes the app from this state by directly launching the app or indirectly interacting with the app (through the sharesheet or a widget, selecting the app as live wallpaper, etc.). In Android 15, we've updated the behavior of the system to be aligned with this intended behavior. Apps should only be removed from the stopped state through direct or indirect user action.

To support the intended behavior, in addition to the existing restrictions, the system also cancels all pending intents when the app enters the stopped state on a device running Android 15. When the user's actions remove the app from the stopped state, the ACTION_BOOT_COMPLETED broadcast is delivered to the app providing an opportunity to re-register any pending intents.

You can call the new ApplicationStartInfo.wasForceStopped() method to confirm whether the app was put into the stopped state.

پشتیبانی از اندازه صفحه 16 کیلوبایت

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 might not work on 16 KB devices when they are productionized 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.

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.

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

فضای خصوصی یک ویژگی جدید در اندروید 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 حذف شد

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 هدف از 23 به 24 افزایش یافت

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

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

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

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

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 شامل تغییراتی است که برای ایجاد یک تجربه کاربری سازگارتر و بصری در نظر گرفته شده است.

انیمیشن‌های پیش‌بینی‌کننده پشتی برای برنامه‌هایی که شرکت کرده‌اند فعال شد

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 by FragmentManager or by the Navigation component instead.

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

اگر کاربر به زور برنامه ای را در دستگاهی که اندروید 15 دارد متوقف کند، سیستم به طور موقت تمام ویجت های برنامه را غیرفعال می کند. ویجت ها خاکستری هستند و کاربر نمی تواند با آنها تعامل داشته باشد. این به این دلیل است که با شروع اندروید 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.

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

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های خاص Android ممکن است منسوخ شوند یا برای ارائه تجربه بهتر توسعه‌دهنده یا پشتیبانی از قابلیت‌های پلتفرم جدید نیاز به بازسازی داشته باشند. در این موارد، ما رسماً API های منسوخ شده را منسوخ می کنیم و توسعه دهندگان را به API های جایگزین هدایت می کنیم تا به جای آن از آنها استفاده کنند.

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