نمای کلی ویژگی‌ها و میاناهای برنامه‌سازی کاربردی

‫Android 13 ویژگی‌های جدید و میاناهای برنامه‌سازی کاربردی فوق‌العاده‌ای برای توسعه‌دهندگان معرفی می‌کند. بخش‌های زیر به شما کمک می‌کند با ویژگی‌های برنامه‌هایتان آشنا شوید و با میاناهای برنامه‌سازی کاربردی مربوطه شروع کنید.

برای مشاهده فهرست دقیق میاناهای برنامه‌سازی کاربردی جدید، اصلاح‌شده، و حذف‌شده، گزارش تفاوت میانای برنامه‌سازی کاربردی را بخوانید. برای جزئیات درباره میاناهای برنامه‌سازی کاربردی جدید، به مرجع میانای برنامه‌سازی کاربردی Android مراجعه کنید — میاناهای برنامه‌سازی کاربردی جدید برای نمایان بودن برجسته شده‌اند. همچنین، برای آشنایی با بخش‌هایی که تغییرات پلاتفرم ممکن است بر برنامه‌هایتان تأثیر بگذارد، حتماً تغییرات رفتاری Android 13 را برای برنامه‌هایی که Android 13 را هدف قرار می‌دهند و برای همه برنامه‌ها بررسی کنید.

بهره‌وری و ابزارهای توسعه‌دهنده

نمادهای برنامه هماهنگ با زمینه

کاربر نمادهای برنامه طرح‌دار را انتخاب می‌کند
موافقت کردن با نمادهای برنامه زمینه‌ای در Android 13

از Android 13 به‌بعد، می‌توانید نمادهای برنامه زمینه‌دار را انتخاب کنید. با این ویژگی، نمادهای برنامه در راه‌اندازهای Android پشتیبانی‌شده رنگ‌آمیزی می‌شوند تا رنگ کاغذدیواری انتخابی کاربر و زمینه‌های دیگر را به ارث ببرند.

برای پشتیبانی از این ویژگی، برنامه‌تان باید هم نماد تطبیقی و هم نماد برنامه تک‌رنگ ارائه دهد و از عنصر <adaptive-icon> در مانیفست به نماد برنامه تک‌رنگ اشاره کند. اگر کاربری نمادهای برنامه زمینه‌دار را فعال کرده باشد (به‌عبارت دیگر، کلید نمادهای زمینه‌دار را در تنظیمات سیستم روشن کرده باشد) و راه‌انداز از این ویژگی پشتیبانی کند، سیستم از رنگ کاغذدیواری و زمینه انتخابی کاربر برای تعیین رنگ سایه استفاده می‌کند و سپس آن را روی نماد برنامه تک‌رنگ اعمال می‌کند.

در هریک از سناریوهای زیر، صفحه اصلی نماد برنامه زمینه‌ای را نمایش نمی‌دهد و به‌جای آن نماد برنامه تطبیقی یا استاندارد را نمایش می‌دهد:

  • اگر کاربر نمادهای برنامه طرح‌دار را فعال نکرده باشد
  • اگر برنامه‌تان نماد برنامه تک‌رنگ ارائه نمی‌دهد
  • اگر راه‌انداز از نمادهای موضوعی برنامه پشتیبانی نمی‌کند

برای جزئیات و دستورالعمل‌های بیشتر، نمادهای تطبیق‌پذیر را ببینید.

اولویت‌های زبان هر برنامه

زبان‌های هر برنامه در تنظیمات سیستم

در بسیاری از موارد، کاربران چندزبانه زبان سیستم خود را روی یک زبان (مثلاً انگلیسی) تنظیم می‌کنند، اما می‌خواهند زبان‌های دیگری را برای برنامه‌های خاصی انتخاب کنند (مثلاً هلندی، چینی، یا هندی). برای کمک به برنامه‌ها در ارائه تجربه بهتر به این کاربران، Android 13 ویژگی‌های زیر را برای برنامه‌هایی که از چند زبان پشتیبانی می‌کنند معرفی می‌کند:

  • تنظیمات سیستم: مکانی متمرکز که کاربران می‌توانند زبان ترجیحی را برای هر برنامه انتخاب کنند.

    برنامه شما باید مشخصه android:localeConfig را در مانیفست برنامه‌تان اعلام کند تا به سیستم اطلاع دهد که از چند زبان پشتیبانی می‌کند. برای کسب اطلاعات بیشتر، دستورالعمل‌های مربوط به ایجاد فایل منبع و اعلام آن در فایل مانیفست برنامه را ببینید.

  • میاناهای برنامه‌سازی کاربردی اضافی: این میاناهای برنامه‌سازی کاربردی عمومی، مثل روش‌های setApplicationLocales() و getApplicationLocales() در LocaleManager، به برنامه‌ها اجازه می‌دهند در زمان اجرا زبانی متفاوت از زبان سیستم تنظیم کنند.

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

    برای سازگاری با نسخه‌های قدیمی‌تر Android، میاناهای برنامه‌سازی کاربردی معادل در AndroidX نیز دردسترس است. توصیه می‌کنیم از میاناهای برنامه‌سازی کاربردی اضافه‌شده در Appcompat 1.6.0-beta01 یا بالاتر استفاده کنید.

برنامه‌هایی که از چند زبان پشتیبانی نمی‌کنند تحت تأثیر این تغییرات قرار نمی‌گیرند.

پشتیبانی بهبودیافته از نوشتار و زبان

‫Android 13 شامل چندین ویژگی بهبود نوشتار و زبان است که به شما کمک می‌کند تجربه بهتری ارائه دهید، که در بخش‌های زیر شرح داده شده است:

خط تیره گذاشتن سریع‌تر

خط تیره گذاشتن خواندن نوشتار پیچیده را آسان‌تر می‌کند و کمک می‌کند واسط کاربر شما سازگارتر شود. از Android 13، عملکرد خط تیره گذاشتن تا ۲۰۰٪ بهینه‌سازی شده است تا بتوانید آن را در TextView خود فعال کنید، بدون اینکه تأثیری بر عملکرد پردازش داشته باشد. برای فعال کردن خط تیره گذاشتن سریع‌تر، از فرکانس‌های fullFast یا normalFast در setHyphenationFrequency() استفاده کنید.

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

افرادی که به زبان‌هایی مانند ژاپنی و چینی صحبت می‌کنند، از روش‌های ورودی حروف آوایی استفاده می‌کنند که اغلب جستجو و ویژگی‌هایی مانند تکمیل خودکار را کند می‌کند. در Android 13، برنامه‌ها می‌توانند میانای برنامه‌سازی کاربردی تبدیل نوشتار جدید را فراخوانی کنند تا کاربران بتوانند آنچه را به‌دنبالش هستند سریع‌تر و آسان‌تر پیدا کنند. قبلاً، برای مثال، جستجوی مستلزم این بود که کاربر ژاپنی این مراحل را انجام دهد:

  1. «هیراگانا» را به‌عنوان تلفظ آوایی عبارت جستجویشان (مثل نام مکان یا برنامه) وارد کنید
  2. استفاده از صفحه‌کلید برای تبدیل نویسه‌های «هیراگانا» به «کانجی»
  3. بااستفاده از نویسه‌های کانجی دوباره جستجو کنید
  4. بالاخره نتایج جستجویشان را دریافت می‌کنند

با میانای برنامه‌سازی کاربردی جدید تبدیل نوشتار، کاربران ژاپنی می‌توانند به زبان هیراگانا تایپ کنند و بلافاصله نتایج جستجوی کانجی را به‌صورت زنده ببینند و مراحل ۲ و ۳ را رد کنند.

بهبود ارتفاع خط برای نویسه‌های غیرلاتین

Android 13 نمایش نویسه‌های غیرلاتین (مثل تامیلی، برمه‌ای، تلوگو، و تبتی) را بااستفاده از ارتفاع خطی که برای هر زبان سازگار شده است بهبود می‌بخشد. ارتفاع‌های جدید خط از برش جلوگیری می‌کند و موقعیت نویسه‌ها را بهبود می‌بخشد. برنامه شما می‌تواند فقط با هدف‌یابی Android 13 از این بهبودها بهره‌مند شود. حتماً برنامه‌هایتان را هنگام استفاده از فاصله خطوط جدید آزمایش کنید زیرا این تغییرات ممکن است بر واسط کاربر شما در زبان‌های غیرلاتین تأثیر بگذارد.

ارتفاع خطوطی که در Android 12 (بالا) بریده شده بودند، اکنون در Android 13 (پایین) بهتر جای‌گذاری شده‌اند و بریده نشده‌اند.

شکست نوشتار ژاپنی بهبودیافته

از Android 13، TextViews می‌تواند نوشتار را به‌جای نویسه، براساس Bunsetsu (کوچک‌ترین واحد کلمات که طبیعی به‌نظر می‌رسد) یا عبارت‌ها بپیچاند تا برنامه‌های ژاپنی مرتب‌تر و خواناتر شوند. می‌توانید بااستفاده از android:lineBreakWordStyle="phrase" با TextViews از این پیچیدن بهره ببرید.

شکست نوشتار ژاپنی با سبک عبارت فعال‌شده (پایین) و بدون آن (بالا).

به‌روزرسانی‌های کتابخانه Unicode

Android 13 جدیدترین بهبودها، اصلاحات، و تغییرات موجود در Unicode ICU 70، Unicode CLDR 40، و Unicode 14.0 را اضافه می‌کند.

در اینجا چند تغییر قابل‌توجه آورده شده است:

  • انگلیسی (کانادا) en‑CA و انگلیسی (جمهوری فیلیپین) en‑PH هر دو از منابع ترجمه انگلیسی (ایالات متحده) en استفاده می‌کنند، وقتی منابع ترجمه دردسترس نباشد، به‌جای انگلیسی (پادشاهی متحد) en‑GB.
  • دسته جمع many برای زبان‌های اسپانیایی es، ایتالیایی it، پرتغالی pt، و پرتغالی (پرتغال) pt‑PT معرفی شده است. مشابه فرانسوی معرفی‌شده در CLDR نسخه ۳۸، این مورد برای اعداد بزرگ استفاده می‌شود.

قلم‌های برداری رنگی

اموجی برداری COLRv1 (چپ) و اموجی نگاشت بیتی (راست)

از Android 13، سیستم از رندر کردن قلم‌های COLR نسخه ۱ (COLRv1) پشتیبانی می‌کند و اموجی سیستم را به قالب COLRv1 به‌روز می‌کند. COLRv1 یک قالب قلم بسیار فشرده است که به‌سرعت و به‌طور واضح در هر اندازه‌ای ارائه می‌شود.

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

برای کسب اطلاعات بیشتر درباره COLRv1، منابع زیر را ببینید:

میانای برنامه‌سازی کاربردی جای‌گذاری «تنظیمات فوری»

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

کادر گفتگویی که از کاربر می‌پرسد آیا می‌خواهد کاشی‌ای به «تنظیمات فوری» اضافه کند یا نه.

پیش‌نمایش بریده‌دان

از Android 13 به بعد، وقتی محتوایی به بریده‌دان اضافه می‌شود، سیستم تأیید بصری استانداردی را نمایش می‌دهد. تأییدیه جدید کارهای زیر را انجام می‌دهد:

  • تأیید می‌کند که محتوا با موفقیت کپی شده است.
  • پیش‌نمایشی از محتوای کپی‌شده ارائه می‌دهد.

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

ابزاره کپی/جای‌گذاری
وقتی محتوا وارد بریده‌دان می‌شود، واسط کاربر جدیدی نشان داده می‌شود.

اشاره برگشت پیش‌گویانه

Android 13 اشاره برگشت پیش‌گویانه را برای دستگاه‌های Android مثل تلفن‌ها، صفحه‌نمایش‌های بزرگ، و دستگاه‌های تاشو معرفی می‌کند. برای پشتیبانی از این ویژگی باید برنامه‌تان را به‌روز کنید.

برای دیدن مستندات مشروح، به به‌روزرسانی برنامه برای پشتیبانی از اشاره برگشت پیش‌گویانه مراجعه کنید. همچنین می‌توانید آزمایشگاه کد ما را امتحان کنید.

صدای بلوتوث کم‌مصرف

«صدای کم‌مصرف» (LE) صدای بی‌سیمی است که برای جایگزینی بلوتوث کلاسیک و فعال کردن برخی موارد استفاده و توپولوژی‌های اتصال ساخته شده است. این ویژگی به کاربران امکان می‌دهد صدایشان را با دوستان و خانواده هم‌رسانی و همه‌فرستی کنند، یا برای دریافت اطلاعات، سرگرمی، یا دسترس‌پذیری در همه‌فرستی‌های عمومی مشترک شوند. این فناوری به‌گونه‌ای طراحی شده است که کاربران بتوانند بدون کاهش عمر باتری، صدای با کیفیت بالا دریافت کنند و به‌طور یکپارچه بین موارد استفاده مختلف که با «بلوتوث کلاسیک» امکان‌پذیر نیست جابه‌جا شوند. از Android نسخه ۱۳ به بعد، سیستم از پشتیبانی داخلی برای LE Audio برخوردار است، بنابراین توسعه‌دهندگان این قابلیت‌ها را به‌طور رایگان در دستگاه‌های سازگار دریافت می‌کنند.

MIDI 2.0

از Android 13، سیستم از استاندارد MIDI 2.0 پشتیبانی می‌کند، ازجمله توانایی اتصال سخت‌افزار MIDI 2.0 ازطریق USB. این استاندارد ویژگی‌هایی مانند وضوح افزایش‌یافته برای کنترل‌کننده‌ها، پشتیبانی بهتر از آهنگ صدای غیرغربی، و اجرای گویاتر بااستفاده از کنترل‌کننده‌های هر نت را ارائه می‌دهد.

بهبود کارایی صفحه اسپلش

‫Android 13 کارایی صفحه‌های اسپلش پویانمایی‌شده را در Splash Screen API بهبود می‌بخشد:

  • سیستم مدت پویانمایی را مستقیماً از AnimatedVectorDrawable استنباط می‌کند. پیش‌از Android 13، لازم بود windowSplashScreenAnimationDuration مستقیماً تنظیم شود.

  • از مشخصه جدید windowSplashScreenBehavior برای کنترل بیشتر بر اینکه آیا برنامه‌تان همیشه نماد را در صفحه اسپلش در Android نسخه ۱۳ و بالاتر نمایش می‌دهد یا نه استفاده کنید.

برای دیدن مستندات مشروح، به صفحه‌های اسپلش مراجعه کنید.

بهینه‌سازی‌های ART

در Android نسخه ۱۳ (سطح میانای برنامه‌سازی کاربردی ۳۳) و بالاتر، ART جابه‌جایی به کد بومی و از کد بومی را بسیار سریع‌تر می‌کند و تماس‌های JNI اکنون تا ۲٫۵ برابر سریع‌تر است. پردازش مرجع زمان اجرا نیز بازسازی شد تا عمدتاً غیرمسدودکننده باشد، که این امر باعث کاهش بیشتر لرزش می‌شود. علاوه‌براین، می‌توانید از Reference.refersTo() میانای برنامه‌سازی کاربردی عمومی برای بازیابی سریع‌تر اشیای غیرقابل‌دسترس استفاده کنید، و متوجه خواهید شد که مفسر اکنون به‌لطف جستجوهای بهینه‌شده کلاس و روش سریع‌تر است. ‫ART همچنین درستی‌سنجی بایت‌کد بیشتری را در زمان نصب انجام می‌دهد، و از هزینه درستی‌سنجی در زمان اجرا جلوگیری می‌کند و زمان راه‌اندازی برنامه را سریع نگه می‌دارد.

حریم خصوصی و امنیت

صادر کردن ایمن‌تر گیرنده‌های ثبت‌شده در بافت

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

این پیکربندی صادر کردن در برنامه‌هایی دردسترس است که حداقل یکی از کارهای زیر را انجام می‌دهند:

انتخاب‌گر عکس

Android نسخه ۱۳ (سطح میانای برنامه‌سازی کاربردی ۳۳) و بالاتر شامل تجربه انتخاب‌گر عکس است. وقتی برنامه‌تان انتخاب‌گر عکس را راه‌اندازی می‌کند، کاربران تصاویر و ویدیوهای خاصی را برای هم‌رسانی با برنامه‌تان انتخاب می‌کنند (مثل عکس‌های نمایه)، به‌جای اینکه به برنامه‌تان اجازه دسترسی برای مشاهده کل کتابخانه رسانه‌ای را بدهند. این روش توصیه‌شده برای دسترسی به عکس‌ها و ویدیوهای کاربر است.

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

اجازه زمان اجرای جدید برای دستگاه‌های Wi-Fi اطراف

Android 13 (سطح میانای برنامه‌سازی کاربردی ۳۳) اجازه زمان اجرای جدیدی را در گروه اجازه‌های NEARBY_DEVICES برای برنامه‌هایی که اتصالات دستگاه به نقاط دسترسی اطراف را ازطریق Wi-Fi مدیریت می‌کنند معرفی می‌کند. این برنامه‌ها باید اجازه جدید NEARBY_WIFI_DEVICES را هنگام فراخوانی چندین میانای برنامه‌سازی کاربردی Wi-Fi مختلف اعلام کنند. علاوه‌براین، تا زمانی که برنامه‌ها مکان فیزیکی را از میاناهای برنامه‌سازی کاربردی Wi-Fi دریافت نکنند، نیازی به اعلام اجازه ACCESS_FINE_LOCATION هنگام هدف‌یابی Android نسخه ۱۳ یا بالاتر ندارند.

درباره اجازه دستگاه‌های Wi-Fi اطراف بیشتر بدانید.

اجازه جدید برای استفاده از هشدارهای دقیق

اگر برنامه شما Android نسخه ۱۳ یا بالاتر را هدف قرار می‌دهد، می‌توانید از اجازه USE_EXACT_ALARM استفاده کنید که به‌طور خودکار به برنامه شما اعطا می‌شود. بااین‌حال، برای اینکه برنامه شما از این اجازه استفاده کند، باید حداقل یکی از معیارهای زیر را برآورده کند:

  • برنامه شما یک برنامه ساعت زنگ‌دار یا یک برنامه زمان‌سنج است.
  • برنامه شما یک برنامه تقویم است که اعلان‌های رویدادهای آتی را نشان می‌دهد.

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

اجازه‌های کاهش‌پذیر تولیدکننده

از Android نسخه ۱۳ به بعد، برنامه‌تان می‌تواند دسترسی به اجازه‌های زمان اجرای استفاده‌نشده را لغو کند. این API به برنامه شما اجازه می‌دهد کارهای بهبوددهنده حریم خصوصی مانند موارد زیر را انجام دهد:

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

طرح امضای APK نسخه ۳.۱

‫Android 13 پشتیبانی از «طرح امضای APK» نسخه ۳.۱ را اضافه می‌کند که «طرح امضای APK» نسخه ۳ موجود را بهبود می‌بخشد. این طرح برخی‌از مشکلات شناخته‌شده «طرح امضای APK نسخه ۳» را دررابطه‌با چرخش برطرف می‌کند. به‌ویژه، طرح امضای نسخه ۳.۱ از هدف‌یابی نسخه کیت توسعه نرم‌افزار پشتیبانی می‌کند که به چرخش اجازه می‌دهد نسخه جدیدتری از پلاتفرم را هدف‌یابی کند.

طرح امضای نسخه ۳.۱ از شناسه بلوکی استفاده می‌کند که در 12L یا پایین‌تر شناسایی نمی‌شود. بنابراین، پلاتفرم رفتار امضاکننده زیر را اعمال می‌کند:

  • دستگاه‌هایی که Android نسخه ۱۳ یا بالاتر دارند از امضاکننده چرخشی در بلوک نسخه ۳.۱ استفاده می‌کنند.
  • دستگاه‌هایی که نسخه‌های قدیمی‌تر Android را اجرا می‌کنند، امضاکننده چرخش‌یافته را نادیده می‌گیرند و درعوض از امضاکننده اصلی در بلوک نسخه ۳.۰ استفاده می‌کنند.

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

برنامه‌هایی که قبلاً چرخش داشته‌اند و می‌خواهند به استفاده از کلید امضای چرخشی خود در بلوک امضای نسخه ۳.۰ ادامه دهند، باید فراخوانی apksigner خود را به‌روز کنند:

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

...که در آن API_LEVEL برابر با ۳۲ یا کمتر است.

گزارش خطا در Keystore و KeyMint بهبود یافته است

برای برنامه‌هایی که کلید تولید می‌کنند، Keystore و KeyMint اکنون نشانگرهای خطای دقیق‌تر و جزئی‌تری ارائه می‌دهند. سلسله‌مراتب کلاس استثنا را تحت java.security.ProviderException اضافه کرده‌ایم، با استثناهای مختص Android که شامل کدهای خطای Keystore/KeyMint و اینکه آیا خطا قابل‌تکرار است یا نه می‌شود. همچنین می‌توانید روش‌های تولید و استفاده از کلید (امضا، رمزگذاری) را تغییر دهید تا استثناهای جدید را ایجاد کنید. گزارش خطا بهبودیافته به تولید کلید محدود نمی‌شود و اکنون باید آنچه را که برای امتحان مجدد تولید کلید نیاز دارید به شما ارائه دهد.

پشتیبانی از رایانه لوحی و صفحه‌نمایش بزرگ

‫Android 13 براساس بهینه‌سازی‌های رایانه لوحی معرفی‌شده در Android 12 و نوویژگی‌های 12L ساخته شده است—ازجمله بهینه‌سازی‌های واسط کاربر سیستم، چندوظیفگی بهتر، و حالت‌های سازگاری بهبودیافته. به‌عنوان بخشی از آزمایش، مطمئن شوید برنامه‌هایتان در رایانه‌های لوحی و دیگر دستگاه‌های دارای صفحه‌نمایش بزرگ به بهترین شکل نشان داده می‌شوند.

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

گرافیک‌

سایه‌زن‌های برنامه‌پذیر

سایه‌زن پویانمایی AGSL، اقتباس‌شده از این سایه‌زن GLSL.

از Android 13 به بعد، سیستم از اشیای قابل‌برنامه‌ریزی RuntimeShader پشتیبانی می‌کند، و رفتار آن‌ها بااستفاده از Android Graphics Shading Language (AGSL) تعریف می‌شود. AGSL بخش زیادی از نحو خود را با GLSL به‌اشتراک می‌گذارد، اما در موتور پردازش Android کار می‌کند تا نقاشی را در بوم Android و همچنین فیلتر کردن محتوای View سفارشی کند. Android به‌طور داخلی از این سایه‌زن‌ها برای پیاده‌سازی جلوه‌های موج‌دار، محو کردن، و کشیدن فراتر از پیمایش استفاده می‌کند. Android 13 و نسخه‌های بالاتر به شما امکان می‌دهند جلوه‌های پیشرفته مشابهی برای برنامه‌تان ایجاد کنید.

بهبودهای Choreographer

Android 13 روش‌های میانای برنامه‌سازی کاربردی عمومی را برای Choreographer و ASurfaceControl معرفی می‌کند که اطلاعات بیشتری درباره خطوط زمان فریم ممکن به برنامه‌ها ارائه می‌دهد و بافت بیشتری به SurfaceFlinger درباره چرخه حیات فریم اضافه می‌کند. مشابه قبل، برنامه‌ها می‌توانند یک فراخوانی برگشتی پست کنند به Choreographer و اطلاعات خط زمان قاب را دریافت کنند. در Android 13 (سطح میانای برنامه‌سازی کاربردی ۳۳)، Choreographer چندین زمان ارائه ممکن و مهلت‌های فریم مربوطه را برمی‌گرداند. برنامه‌ها می‌توانند زمان ارائه را انتخاب کنند و متعاقباً به SurfaceFlinger اطلاع دهند. سپس SurfaceFlinger تلاش نمی‌کند تراکنش‌ها را اعمال کند یا میان‌گیرها را قبل‌از زمان ارائه مطلوب قفل کند.

اگر برنامه‌تان از روش‌های جدید Choreographer و SurfaceControl استفاده می‌کند، می‌توانید چرخه حیات قاب برنامه را در ردگیری Perfetto مشاهده کنید.

دوربین

ضبط ویدیو HDR

از Android 13، Camera2 APIs از ضبط ویدیو «دامنه پویای بالا» (HDR) پشتیبانی می‌کند که به شما امکان می‌دهد محتوای ویدیویی HDR را بااستفاده از دوربینتان پیش‌نمایش و ضبط کنید. درمقایسه با «دامنه پویای استاندارد» (SDR)،‏ HDR طیف وسیع‌تری از رنگ‌ها را ارائه می‌دهد و دامنه پویای مؤلفه درخشندگی را افزایش می‌دهد (از ۱۰۰ cd/m2 فعلی به ۱۰۰۰ cd/m2). این امر منجر به کیفیت ویدیویی می‌شود که با رنگ‌های غنی‌تر، برجستگی‌های روشن‌تر، و سایه‌های تیره‌تر، بیشتر با زندگی واقعی مطابقت دارد.

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

رسانه

صدای فضایی

صدای فضایی یک تجربه صوتی فراگیر است که باعث می‌شود محتوای رسانه‌ای برای کاربران شما واقعی‌تر به‌نظر برسد. برای جزئیات بیشتر درباره نحوه ادغام با این ویژگی، به اسناد صدای فضایی ما مراجعه کنید.

مسیریابی صوتی پیش‌بینانه

برای کمک به برنامه‌های رسانه در شناسایی نحوه مسیریابی صدایشان، Android 13 میاناهای برنامه‌سازی کاربردی مسیر صدا را در کلاس AudioManager معرفی می‌کند. getAudioDevicesForAttributes() API به شما امکان می‌دهد فهرستی از دستگاه‌هایی را که ممکن است برای پخش صدای مشخص‌شده استفاده شوند بازیابی کنید، و getDirectProfilesForAttributes() API به شما کمک می‌کند متوجه شوید آیا جاری‌سازی صوتی شما می‌تواند مستقیماً پخش شود یا نه. از این میاناهای برنامه‌سازی کاربردی برای تعیین بهترین AudioFormat برای استفاده در قطعه صوتی‌تان استفاده کنید.

دسترس‌پذیری

شرح صوتی

‫Android 13 (سطح میانای برنامه‌سازی کاربردی ۳۳) اولویت دسترس‌پذیری جدیدی را در سراسر سیستم معرفی می‌کند که به کاربران امکان می‌دهد شرح صوتی را در همه برنامه‌ها فعال کنند. شرح صوتی یک قطعه روایت اضافی است که شامل صحبت کردن راوی درطول ارائه است و آنچه را که روی صفحه اتفاق می‌افتد درطول وقفه‌های طبیعی صدا توصیف می‌کند. برنامه‌ها می‌توانند با پُرسمان کردن با isAudioDescriptionRequested()، ترجیح کاربر را برای قطعه‌های شرح صوتی دنبال کنند، همان‌طور که در تکه‌کد زیر نشان داده شده است:

کاتلین

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (accessibilityManager.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

جاوا

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

برنامه‌ها می‌توانند با افزودن شنونده به AccessbilityManager، تغییر اولویت کاربر را پایش کنند:

کاتلین

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

جاوا

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

عملکرد اصلی

به‌روزرسانی‌های OpenJDK 11

Android 13 کار بازآوری کتابخانه‌های اصلی Android را برای هم‌راستا شدن با نسخه OpenJDK 11 LTS با به‌روزرسانی‌های کتابخانه و پشتیبانی از زبان Java 11 برای توسعه‌دهندگان برنامه و پلاتفرم آغاز می‌کند. تغییرات کتابخانه اصلی معرفی‌شده در Android 13 ازطریق به‌روزرسانی سیستم Google Play در «واحد اصلی ART» برای دستگاه‌های Android 12 نیز دردسترس خواهد بود.

Android 13 شامل تغییرات زیر در کتابخانه‌های اصلی است:

  • پشتیبانی از کلیدواژه var برای متغیرهای محلی و به‌عنوان پارامترهای لامبدا.
  • روش‌های جدید در کلاس String:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • پشتیبانی از Collection.toArray(IntFunction) برای آسان‌تر کردن تطبیق مجموعه با آرایه.

  • پشتیبانی از ifPresentOrElse()،‏ isEmpty()،‏ orElseThrow()، و stream() در کلاس‌های java.util Optional،‏ OptionalDouble،‏ OptionalInt، و OptionalLong.

  • پشتیبانی گسترده برای SocketOptions شامل استفاده مجدد از سوکت‌ها.

  • ‫NullReader،‏ NullWriter،‏ InputStream،‏ OutputStream، و transferTo() عملکرد Reader که نویسه‌های خوانده‌شده را به Writer منتقل می‌کند.

  • عملکردی برای کدبندی و رمزگشایی نشانی وب بااستفاده از Charsets اضافه شد.

  • عملکرد Charset برای FileReader،‏ FileWriter،‏ PrintStream، و PrintWriter.

  • عملکردهای جدید transferTo()،‏ readNBytes()،‏ readAllBytes()، و writeBytes() برای ByteArrayInput یا OutputStream و Input یا OutputStream.

  • پشتیبانی از زمان اجرا و کامپایلر برای java.lang.invoke.VarHandle.

  • به‌روزرسانی‌های java.util.concurrent به OpenJDK 11 API بااستفاده از VarHandle به‌صورت داخلی.

جاوا و OpenJDK علامت‌های تجاری یا علامت‌های تجاری ثبت‌شده Oracle و/یا وابسته‌های آن هستند.