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

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

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

عملکرد اصلی

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

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

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

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

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

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

از لحاظ تاریخی، اندروید تنها از اندازه صفحات حافظه 4 کیلوبایتی پشتیبانی می‌کند که عملکرد حافظه سیستم را برای میانگین کل حافظه‌ای که دستگاه‌های اندرویدی معمولا دارند بهینه می‌کند. با شروع Android 15، AOSP از دستگاه هایی پشتیبانی می کند که برای استفاده از اندازه صفحه 16 کیلوبایت (دستگاه های 16 کیلوبایت) پیکربندی شده اند. اگر برنامه شما از کتابخانه های NDK استفاده می کند، چه به طور مستقیم یا غیرمستقیم از طریق یک SDK، باید برنامه خود را بازسازی کنید تا بتواند روی این دستگاه های 16 کیلوبایتی کار کند.

از آنجایی که سازندگان دستگاه‌ها به ساخت دستگاه‌هایی با حافظه فیزیکی (RAM) بیشتر ادامه می‌دهند، بسیاری از این دستگاه‌ها از اندازه صفحه ۱۶ کیلوبایت (و در نهایت بیشتر) برای بهینه‌سازی عملکرد دستگاه استفاده می‌کنند. افزودن پشتیبانی برای دستگاه‌های اندازه صفحه 16 کیلوبایت، برنامه شما را قادر می‌سازد تا در این دستگاه‌ها اجرا شود و به برنامه شما کمک می‌کند از بهبودهای عملکرد مرتبط بهره مند شود. بدون کامپایل مجدد، برنامه‌ها ممکن است در دستگاه‌های 16 کیلوبایتی در نسخه‌های بعدی اندروید تولید نشوند.

برای کمک به اضافه کردن پشتیبانی از برنامه خود، راهنمایی هایی در مورد نحوه بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است ، نحوه بازسازی برنامه خود (در صورت وجود) و نحوه آزمایش برنامه خود در یک محیط 16 کیلوبایتی با استفاده از شبیه سازها (از جمله Android) ارائه کرده ایم. 15 تصویر سیستم برای شبیه ساز اندروید).

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

配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

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

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

如果您的应用使用任何原生代码,则您应重新构建支持 16 KB 设备的应用。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码

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

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

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

فایل فونت emoji قدیمی مبتنی بر PNG ( NotoColorEmojiLegacy.ttf ) حذف شده است و فقط فایل مبتنی بر برداری باقی می ماند. با شروع Android 13 (سطح API 33)، فایل فونت emoji مورد استفاده توسط رندر ایموجی سیستم از یک فایل مبتنی بر PNG به یک فایل مبتنی بر برداری تغییر کرد . این سیستم فایل فونت قدیمی را در اندروید 13 و 14 به دلایل سازگاری حفظ کرد، به طوری که برنامه‌هایی با ارائه‌دهنده فونت خود می‌توانند به استفاده از فایل فونت قدیمی تا زمانی که قادر به ارتقا باشند ادامه دهند.

برای بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است، کد برنامه خود را برای ارجاع به فایل NotoColorEmojiLegacy.ttf جستجو کنید.

می‌توانید برنامه خود را به روش‌های مختلفی تطبیق دهید:

  • از API های پلتفرم برای رندر متن استفاده کنید. می‌توانید متن را به یک Canvas با پشتوانه بیت‌مپ رندر کنید و در صورت لزوم از آن برای دریافت تصویر خام استفاده کنید.
  • پشتیبانی از فونت COLRv1 را به برنامه خود اضافه کنید. کتابخانه منبع باز FreeType از COLRv1 در نسخه 2.13.0 و بالاتر پشتیبانی می کند.
  • به‌عنوان آخرین راه‌حل، می‌توانید فایل فونت emoji قدیمی ( NotoColorEmoji.ttf ) را در APK خود قرار دهید، اگرچه در این صورت برنامه شما آخرین به‌روزرسانی‌های ایموجی را از دست خواهد داد. برای اطلاعات بیشتر، به صفحه پروژه Noto Emoji GitHub مراجعه کنید.

حداقل نسخه SDK هدف از 23 به 24 افزایش یافت

اندروید 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

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

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

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

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

با شروع Android 15، زمانی که برنامه‌ای درخواست پخش مستقیم یا تخلیه بار می‌کند و محدودیت‌های منابع به دست می‌آید، سیستم هر شی AudioTrack را که در حال حاضر باز است که مانع از انجام درخواست آهنگ جدید می‌شود، باطل می‌کند.

(تراک‌های صوتی مستقیم و بدون بار معمولاً برای پخش فرمت‌های صوتی فشرده باز می‌شوند. موارد رایج برای پخش صدای مستقیم شامل پخش صدای کدگذاری شده از طریق HDMI به تلویزیون است. آهنگ‌های Offload معمولاً برای پخش صدای فشرده در دستگاه تلفن همراه با DSP سخت‌افزاری استفاده می‌شوند. شتاب.)

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

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

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

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

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

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

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

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

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

تحقیرها

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

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

،

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

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

عملکرد اصلی

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

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

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

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

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

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

از لحاظ تاریخی، اندروید تنها از اندازه صفحات حافظه 4 کیلوبایتی پشتیبانی می‌کند که عملکرد حافظه سیستم را برای میانگین کل حافظه‌ای که دستگاه‌های اندرویدی معمولا دارند بهینه می‌کند. با شروع Android 15، AOSP از دستگاه هایی پشتیبانی می کند که برای استفاده از اندازه صفحه 16 کیلوبایت (دستگاه های 16 کیلوبایت) پیکربندی شده اند. اگر برنامه شما از کتابخانه های NDK استفاده می کند، چه به طور مستقیم یا غیرمستقیم از طریق یک SDK، باید برنامه خود را بازسازی کنید تا بتواند روی این دستگاه های 16 کیلوبایتی کار کند.

از آنجایی که سازندگان دستگاه‌ها به ساخت دستگاه‌هایی با حافظه فیزیکی (RAM) بیشتر ادامه می‌دهند، بسیاری از این دستگاه‌ها از اندازه صفحه ۱۶ کیلوبایت (و در نهایت بیشتر) برای بهینه‌سازی عملکرد دستگاه استفاده می‌کنند. افزودن پشتیبانی برای دستگاه‌های اندازه صفحه 16 کیلوبایت، برنامه شما را قادر می‌سازد تا در این دستگاه‌ها اجرا شود و به برنامه شما کمک می‌کند از بهبودهای عملکرد مرتبط بهره مند شود. بدون کامپایل مجدد، برنامه‌ها ممکن است در دستگاه‌های 16 کیلوبایتی در نسخه‌های بعدی اندروید تولید نشوند.

برای کمک به اضافه کردن پشتیبانی از برنامه خود، راهنمایی هایی در مورد نحوه بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است ، نحوه بازسازی برنامه خود (در صورت وجود) و نحوه آزمایش برنامه خود در یک محیط 16 کیلوبایتی با استفاده از شبیه سازها (از جمله Android) ارائه کرده ایم. 15 تصویر سیستم برای شبیه ساز اندروید).

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

配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

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

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

如果您的应用使用任何原生代码,则您应重新构建支持 16 KB 设备的应用。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码

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

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

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

فایل فونت emoji قدیمی مبتنی بر PNG ( NotoColorEmojiLegacy.ttf ) حذف شده است و فقط فایل مبتنی بر برداری باقی می ماند. با شروع Android 13 (سطح API 33)، فایل فونت emoji مورد استفاده توسط رندر ایموجی سیستم از یک فایل مبتنی بر PNG به یک فایل مبتنی بر برداری تغییر کرد . این سیستم فایل فونت قدیمی را در اندروید 13 و 14 به دلایل سازگاری حفظ کرد، به طوری که برنامه‌هایی با ارائه‌دهنده فونت خود می‌توانند به استفاده از فایل فونت قدیمی تا زمانی که قادر به ارتقا باشند ادامه دهند.

برای بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است، کد برنامه خود را برای ارجاع به فایل NotoColorEmojiLegacy.ttf جستجو کنید.

می‌توانید برنامه خود را به روش‌های مختلفی تطبیق دهید:

  • از API های پلتفرم برای رندر متن استفاده کنید. می‌توانید متن را به یک Canvas با پشتوانه بیت‌مپ رندر کنید و در صورت لزوم از آن برای دریافت تصویر خام استفاده کنید.
  • پشتیبانی از فونت COLRv1 را به برنامه خود اضافه کنید. کتابخانه منبع باز FreeType از COLRv1 در نسخه 2.13.0 و بالاتر پشتیبانی می کند.
  • به‌عنوان آخرین راه‌حل، می‌توانید فایل فونت emoji قدیمی ( NotoColorEmoji.ttf ) را در APK خود قرار دهید، اگرچه در این صورت برنامه شما آخرین به‌روزرسانی‌های ایموجی را از دست خواهد داد. برای اطلاعات بیشتر، به صفحه پروژه Noto Emoji GitHub مراجعه کنید.

حداقل نسخه SDK هدف از 23 به 24 افزایش یافت

اندروید 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

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

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

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

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

با شروع Android 15، زمانی که برنامه‌ای درخواست پخش مستقیم یا تخلیه بار می‌کند و محدودیت‌های منابع به دست می‌آید، سیستم هر شی AudioTrack را که در حال حاضر باز است که مانع از انجام درخواست آهنگ جدید می‌شود، باطل می‌کند.

(تراک‌های صوتی مستقیم و بدون بار معمولاً برای پخش فرمت‌های صوتی فشرده باز می‌شوند. موارد رایج برای پخش صدای مستقیم شامل پخش صدای کدگذاری شده از طریق HDMI به تلویزیون است. آهنگ‌های Offload معمولاً برای پخش صدای فشرده در دستگاه تلفن همراه با DSP سخت‌افزاری استفاده می‌شوند. شتاب.)

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

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

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

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

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

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

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

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

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

تحقیرها

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

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

،

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

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

عملکرد اصلی

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

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

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

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

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

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

از لحاظ تاریخی، اندروید تنها از اندازه صفحات حافظه 4 کیلوبایتی پشتیبانی می‌کند که عملکرد حافظه سیستم را برای میانگین کل حافظه‌ای که دستگاه‌های اندرویدی معمولا دارند بهینه می‌کند. با شروع Android 15، AOSP از دستگاه هایی پشتیبانی می کند که برای استفاده از اندازه صفحه 16 کیلوبایت (دستگاه های 16 کیلوبایت) پیکربندی شده اند. اگر برنامه شما از کتابخانه های NDK استفاده می کند، چه به طور مستقیم یا غیرمستقیم از طریق یک SDK، باید برنامه خود را بازسازی کنید تا بتواند روی این دستگاه های 16 کیلوبایتی کار کند.

از آنجایی که سازندگان دستگاه‌ها به ساخت دستگاه‌هایی با حافظه فیزیکی (RAM) بیشتر ادامه می‌دهند، بسیاری از این دستگاه‌ها از اندازه صفحه ۱۶ کیلوبایت (و در نهایت بیشتر) برای بهینه‌سازی عملکرد دستگاه استفاده می‌کنند. افزودن پشتیبانی برای دستگاه‌های اندازه صفحه 16 کیلوبایت، برنامه شما را قادر می‌سازد تا در این دستگاه‌ها اجرا شود و به برنامه شما کمک می‌کند از بهبودهای عملکرد مرتبط بهره مند شود. بدون کامپایل مجدد، برنامه‌ها ممکن است در دستگاه‌های 16 کیلوبایتی در نسخه‌های بعدی اندروید تولید نشوند.

برای کمک به اضافه کردن پشتیبانی از برنامه خود، راهنمایی هایی در مورد نحوه بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است ، نحوه بازسازی برنامه خود (در صورت وجود) و نحوه آزمایش برنامه خود در یک محیط 16 کیلوبایتی با استفاده از شبیه سازها (از جمله Android) ارائه کرده ایم. 15 تصویر سیستم برای شبیه ساز اندروید).

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

配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

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

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

如果您的应用使用任何原生代码,则您应重新构建支持 16 KB 设备的应用。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码

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

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

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

فایل فونت emoji قدیمی مبتنی بر PNG ( NotoColorEmojiLegacy.ttf ) حذف شده است و فقط فایل مبتنی بر برداری باقی می ماند. با شروع Android 13 (سطح API 33)، فایل فونت emoji مورد استفاده توسط رندر ایموجی سیستم از یک فایل مبتنی بر PNG به یک فایل مبتنی بر برداری تغییر کرد . این سیستم فایل فونت قدیمی را در اندروید 13 و 14 به دلایل سازگاری حفظ کرد، به طوری که برنامه‌هایی با ارائه‌دهنده فونت خود می‌توانند به استفاده از فایل فونت قدیمی تا زمانی که قادر به ارتقا باشند ادامه دهند.

برای بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است، کد برنامه خود را برای ارجاع به فایل NotoColorEmojiLegacy.ttf جستجو کنید.

می‌توانید برنامه خود را به روش‌های مختلفی تطبیق دهید:

  • از API های پلتفرم برای رندر متن استفاده کنید. می‌توانید متن را به یک Canvas با پشتوانه بیت‌مپ رندر کنید و در صورت لزوم از آن برای دریافت تصویر خام استفاده کنید.
  • پشتیبانی از فونت COLRv1 را به برنامه خود اضافه کنید. کتابخانه منبع باز FreeType از COLRv1 در نسخه 2.13.0 و بالاتر پشتیبانی می کند.
  • به‌عنوان آخرین راه‌حل، می‌توانید فایل فونت emoji قدیمی ( NotoColorEmoji.ttf ) را در APK خود قرار دهید، اگرچه در این صورت برنامه شما آخرین به‌روزرسانی‌های ایموجی را از دست خواهد داد. برای اطلاعات بیشتر، به صفحه پروژه Noto Emoji GitHub مراجعه کنید.

حداقل نسخه SDK هدف از 23 به 24 افزایش یافت

اندروید 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

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

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

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

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

با شروع Android 15، زمانی که برنامه‌ای درخواست پخش مستقیم یا تخلیه بار می‌کند و محدودیت‌های منابع به دست می‌آید، سیستم هر شی AudioTrack را که در حال حاضر باز است که مانع از انجام درخواست آهنگ جدید می‌شود، باطل می‌کند.

(تراک‌های صوتی مستقیم و بدون بار معمولاً برای پخش فرمت‌های صوتی فشرده باز می‌شوند. موارد رایج برای پخش صدای مستقیم شامل پخش صدای کدگذاری شده از طریق HDMI به تلویزیون است. آهنگ‌های Offload معمولاً برای پخش صدای فشرده در دستگاه تلفن همراه با DSP سخت‌افزاری استفاده می‌شوند. شتاب.)

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

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

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

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

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

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

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

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

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

تحقیرها

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

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

،

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

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

عملکرد اصلی

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

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

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

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

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

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

از لحاظ تاریخی، اندروید تنها از اندازه صفحات حافظه 4 کیلوبایتی پشتیبانی می‌کند که عملکرد حافظه سیستم را برای میانگین کل حافظه‌ای که دستگاه‌های اندرویدی معمولا دارند بهینه می‌کند. با شروع Android 15، AOSP از دستگاه هایی پشتیبانی می کند که برای استفاده از اندازه صفحه 16 کیلوبایت (دستگاه های 16 کیلوبایت) پیکربندی شده اند. اگر برنامه شما از کتابخانه های NDK استفاده می کند، چه به طور مستقیم یا غیرمستقیم از طریق یک SDK، باید برنامه خود را بازسازی کنید تا بتواند روی این دستگاه های 16 کیلوبایتی کار کند.

از آنجایی که سازندگان دستگاه‌ها به ساخت دستگاه‌هایی با حافظه فیزیکی (RAM) بیشتر ادامه می‌دهند، بسیاری از این دستگاه‌ها از اندازه صفحه ۱۶ کیلوبایت (و در نهایت بیشتر) برای بهینه‌سازی عملکرد دستگاه استفاده می‌کنند. افزودن پشتیبانی برای دستگاه‌های اندازه صفحه 16 کیلوبایت، برنامه شما را قادر می‌سازد تا در این دستگاه‌ها اجرا شود و به برنامه شما کمک می‌کند از بهبودهای عملکرد مرتبط بهره مند شود. بدون کامپایل مجدد، برنامه‌ها ممکن است در دستگاه‌های 16 کیلوبایتی در نسخه‌های بعدی اندروید تولید نشوند.

برای کمک به اضافه کردن پشتیبانی از برنامه خود، راهنمایی هایی در مورد نحوه بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است ، نحوه بازسازی برنامه خود (در صورت وجود) و نحوه آزمایش برنامه خود در یک محیط 16 کیلوبایتی با استفاده از شبیه سازها (از جمله Android) ارائه کرده ایم. 15 تصویر سیستم برای شبیه ساز اندروید).

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

配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

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

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

如果您的应用使用任何原生代码,则您应重新构建支持 16 KB 设备的应用。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码

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

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

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

فایل فونت emoji قدیمی مبتنی بر PNG ( NotoColorEmojiLegacy.ttf ) حذف شده است و فقط فایل مبتنی بر برداری باقی می ماند. با شروع Android 13 (سطح API 33)، فایل فونت emoji مورد استفاده توسط رندر ایموجی سیستم از یک فایل مبتنی بر PNG به یک فایل مبتنی بر برداری تغییر کرد . این سیستم فایل فونت قدیمی را در اندروید 13 و 14 به دلایل سازگاری حفظ کرد، به طوری که برنامه‌هایی با ارائه‌دهنده فونت خود می‌توانند به استفاده از فایل فونت قدیمی تا زمانی که قادر به ارتقا باشند ادامه دهند.

برای بررسی اینکه آیا برنامه شما تحت تأثیر قرار گرفته است، کد برنامه خود را برای ارجاع به فایل NotoColorEmojiLegacy.ttf جستجو کنید.

می‌توانید برنامه خود را به روش‌های مختلفی تطبیق دهید:

  • از API های پلتفرم برای رندر متن استفاده کنید. می‌توانید متن را به یک Canvas با پشتوانه بیت‌مپ رندر کنید و در صورت لزوم از آن برای دریافت تصویر خام استفاده کنید.
  • پشتیبانی از فونت COLRv1 را به برنامه خود اضافه کنید. کتابخانه منبع باز FreeType از COLRv1 در نسخه 2.13.0 و بالاتر پشتیبانی می کند.
  • به‌عنوان آخرین راه‌حل، می‌توانید فایل فونت emoji قدیمی ( NotoColorEmoji.ttf ) را در APK خود قرار دهید، اگرچه در این صورت برنامه شما آخرین به‌روزرسانی‌های ایموجی را از دست خواهد داد. برای اطلاعات بیشتر، به صفحه پروژه Noto Emoji GitHub مراجعه کنید.

حداقل نسخه SDK هدف از 23 به 24 افزایش یافت

اندروید 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

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

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

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

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

با شروع Android 15، زمانی که برنامه‌ای درخواست پخش مستقیم یا تخلیه بار می‌کند و محدودیت‌های منابع به دست می‌آید، سیستم هر شی AudioTrack را که در حال حاضر باز است که مانع از انجام درخواست آهنگ جدید می‌شود، باطل می‌کند.

(تراک‌های صوتی مستقیم و بدون بار معمولاً برای پخش فرمت‌های صوتی فشرده باز می‌شوند. موارد رایج برای پخش صدای مستقیم شامل پخش صدای کدگذاری شده از طریق HDMI به تلویزیون است. آهنگ‌های Offload معمولاً برای پخش صدای فشرده در دستگاه تلفن همراه با DSP سخت‌افزاری استفاده می‌شوند. شتاب.)

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

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

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

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

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

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

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

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

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

تحقیرها

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

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