این صفحه خلاصهای از ویژگیهای اصلی نسخه اندروید ۱۰ را ارائه میدهد و پیوندهایی به اطلاعات تکمیلی ارائه میدهد. این خلاصه ویژگیها بر اساس محل مستندات هر ویژگی در این سایت سازماندهی شدهاند.
اندروید ۱۰، java_sdk_library معرفی میکند، یک قانون ساخت جدید برای رفع مشکلات سازگاری برای کتابخانههای مشترک جاوا. تولیدکنندگان دستگاه میتوانند از این مکانیزم برای کتابخانههای مشترک جاوای خود استفاده کنند تا سازگاری معکوس را برای APIهای خود حفظ کنند.
اندروید ۱۰ برخی از اجزای سیستم اندروید را ماژولار میکند و امکان بهروزرسانی آنها را خارج از چرخه انتشار عادی اندروید فراهم میکند. برخی از ماژولها عبارتند از:
- زمان اجرای اندروید
- رمزگذاری
- حل کننده DNS
- رابط کاربری اسناد
- خدمات خارجی
- رسانه
- ماژول فراداده
- شبکهسازی
- کنترلکنندهی مجوز
- دادههای منطقه زمانی
اندروید ۱۰ از خاموش شدن خودکار HALها در صورت عدم وجود کلاینت پشتیبانی میکند.
اندروید ۱۰ شامل پشتیبانی از ابزارهای جدید نظارت بر ABI است که به مقایسه، ردیابی و کاهش تغییرات ABI هسته که بر سازگاری با ماژولهای هسته تأثیر میگذارند، کمک میکند.
اندروید ۱۰ همچنین یک بررسیکنندهی میزان استفاده از ABI مبتنی بر نماد را معرفی میکند. این بررسیکننده میتواند فایلهای باینری از پیش ساخته شدهی قدیمی را در زمان ساخت شناسایی کند، به طوری که توسعهدهندگان کتابخانههای اشتراکی میتوانند بدانند کدام فایلهای باینری از پیش ساخته شده ممکن است با تغییر آنها خراب شوند و کدام فایلهای باینری از پیش ساخته شده باید دوباره ساخته شوند.
اندروید ۱۰ شامل Android Live-Lock Daemon (llkd) است که برای شناسایی و کاهش بنبستهای هسته طراحی شده است.
اندروید ۱۰ از vDSO32 روی هستههای ۶۴ بیتی پشتیبانی میکند که باعث افزایش ۰.۴ درصدی عمر باتری و بهبودهای دیگر در عملکرد میشود.
اندروید ۱۰ از دستگاهها میخواهد که ورودیهای fstab را برای پارتیشنهای مانتشدهی اولیه با استفاده از یک فایل fstab در مرحلهی اول ramdisk مشخص کنند.
اندروید ۱۰ شامل یک BroadcastQueue جدید offload به صفهای پسزمینه و پیشزمینه موجود است. صف offload همان رفتار اولویت و زمان انقضای صف پسزمینه را دارد. برای جلوگیری از مسدود شدن صف پسزمینه، جایی که پخشهای جالبتر یا قابل مشاهدهتر برای کاربر میتوانند رخ دهند، صف offload پخش BOOT_COMPLETED را مدیریت میکند، که بسیاری از برنامهها به آن گوش میدهند و تکمیل آن میتواند مدت زیادی طول بکشد. صف offload در حال حاضر فقط پخش BOOT_COMPLETED را مدیریت میکند، اما به طور بالقوه میتواند پخشهای طولانی دیگری را نیز مدیریت کند.
اندروید ۱۰ نخ موجود در libsuspend که مسئول آغاز تعلیق سیستم است را با سرویس SystemSuspend HIDL جایگزین میکند. این پیادهسازی، عملکردی معادل نسخههای قبلی ارائه میدهد و در عین حال از مزایای زیرساخت HIDL اندروید نیز بهرهمند میشود.
اندروید ۱۰ در HIDL، safe_union معرفی میکند که یک نوع union با برچسبگذاری صریح است.
اندروید ۱۰ به دلیل مصرف زیاد حافظه و دشواری در استفاده، HAL مربوط به ConfigStore را منسوخ کرده و HAL را با ویژگیهای سیستمی جایگزین میکند.
پلتفرم اندروید شامل تعداد زیادی فایل XML برای ذخیره دادههای پیکربندی است. بسیاری از فایلهای XML در پارتیشن vendor قرار دارند، اما در پارتیشن system خوانده میشوند. در این حالت، طرحواره فایل XML به عنوان رابط بین دو پارتیشن عمل میکند و بنابراین طرحواره باید به صراحت مشخص شود و باید به شیوهای سازگار با نسخههای قبلی تکامل یابد. قبل از اندروید ۱۰، پلتفرم مکانیسمهایی برای الزام به تعیین و استفاده از طرحواره XML یا جلوگیری از تغییرات ناسازگار در طرحواره ارائه نمیکرد. اندروید ۱۰ این مکانیسم را با نام Config File Schema API ارائه میدهد.
ویژگیهای سیستم که از طریق پارتیشنها قابل دسترسی هستند، در فایلهای توصیفی sysprop شماتیک میشوند و APIهای دسترسی به ویژگیها به صورت توابع ملموس برای C++ و کلاسها برای جاوا تولید میشوند.
تغییرات VINTF در اندروید ۱۰ شامل موارد زیر است:
- منسوخ کردن برچسبهای نسخه AVB
- افزودن اطلاعات کرنل در بستههای OTA
- ساخت و ساز رسمی ODM manifests
- اضافه کردن ماتریس سازگاری محصول
- مرتبط کردن یک ورودی مانیفست با یک ماژول HAL در سیستم ساخت
در اندروید ۱۰، فایل سیستم ریشه دیگر در ramdisk.img قرار ندارد و در عوض در system.img ادغام شده است.
اندروید ۱۰ شامل پشتیبانی از ساخت پارتیشنهای odm با استفاده از سیستم ساخت اندروید است. میتوانید از یک پارتیشن جداگانه /odm برای سفارشیسازی استفاده کنید که به شما امکان میدهد از یک تصویر فروشنده واحد برای چندین SKU سختافزاری استفاده کنید. این امر تولیدکنندگان طرح اصلی (ODM) را قادر میسازد تا بستههای پشتیبانی برد (BSP) فروشنده سیستم روی تراشه (SoC) را برای دستگاههای خاص خود (بردهای خود) سفارشی کنند. آنها میتوانند ماژولهای هسته را برای اجزای خاص برد، سرویسهای خاص برد یا ویژگیهای خاص خود را در لایههای انتزاعی سختافزار (HAL) پیادهسازی کنند. آنها همچنین ممکن است اجزای SoC را جایگزین یا سفارشی کنند.
اندروید ۱۰ هدر تصویر بوت را به نسخه ۲ بهروزرسانی میکند، که شامل بخشی برای ذخیره تصویر درخت دستگاه (DTB) است. آزمایشهای VTS اندروید ۱۰ تأیید میکنند که همه دستگاههایی که با اندروید ۱۰ راهاندازی میشوند از هدر تصویر بوت نسخه ۲ استفاده میکنند و یک تصویر DTB معتبر را به عنوان بخشی از تصاویر بوت/بازیابی در خود جای میدهند.
در اندروید ۹ و بالاتر، تصویر بازیابی دستگاه باید حاوی اطلاعاتی از تصویر پوششی باشد . تولیدکنندگان دستگاه میتوانند از DeviceTree یا Advanced Configuration and Power Interface (ACPI) برای توصیف همه دستگاههای غیرقابل شناسایی استفاده کنند. اندروید ۱۰ و بالاتر شامل پشتیبانی از معماریهایی است که به جای DeviceTree blob برای پوشش (DTBO) از ACPI استفاده میکنند.
اندروید ۱۰ پشتیبانی از زبان تعریف رابط کاربری پایدار اندروید (AIDL) را اضافه میکند، روشی جدید برای پیگیری رابط برنامه کاربردی (API)/رابط دودویی برنامه (ABI) که توسط رابطهای AIDL ارائه میشود.
اندروید ۱۰ با انتقال پیادهسازی فستبوت از بوتلودر به فضای کاربر، پشتیبانی از پارتیشنهای قابل تغییر اندازه را اضافه میکند.
اندروید ۱۰ از پخش HDR10، VP9 و HDR10+ پشتیبانی میکند.
طبقهبندی متن از تکنیکهای یادگیری ماشین برای کمک به توسعهدهندگان در طبقهبندی متن استفاده میکند. اندروید ۱۰ دو متد را به API کلاسیفایر متن معرفی میکند: suggestConversationActions و detectLanguage . متد suggestConversationActions پاسخها و اقدامات پیشنهادی را از یک مکالمه داده شده تولید میکند و متد detectLanguage زبان متن را تشخیص میدهد.
فونت Zawgyi محبوبترین فونت در میانمار است. اندروید ۹ و پایینتر از رندر کردن Zawgyi پشتیبانی نمیکرد زیرا با یونیکد سازگار نبود . اندروید ۱۰ با اضافه کردن یک فونت یونیکد که قادر به رندر کردن همزمان هر دو زبان برمه یونیکد و Zawgyi است، این مشکل را برطرف کرده است. برای پشتیبانی از رندر کردن فونت Zawgyi در دستگاههایی که با اندروید ۱۰ عرضه میشوند، نیازی به کار پیادهسازی نیست. اگر دستگاههای شما پیادهسازی سفارشی برای پشتیبانی از Zawgyi دارند، میتوانید:
- آن تغییرات را به حالت اولیه برگردانید و از روش پشتیبانیشده توسط پلتفرم استفاده کنید.
- فونت رایج Zawgyi را در سیستم خود نگه دارید و از کد محلی
my-qaagدرfonts.xmlخود استفاده کنید. برای اطلاعات بیشتر، به یادداشتهای انتشار Unicode CLDR در مورد Zawgyi (Qaag) مراجعه کنید.
اندروید ۱۰ قابلیت پنهان کردن آیکونهای لانچر برنامهها را محدود میکند. اگر فعالیت لانچر برای یک برنامه فعال نباشد، سیستم یک فعالیت ترکیبی در لانچر نمایش میدهد؛ این فعالیت ترکیبی، صفحه جزئیات برنامه را در تنظیمات سیستم نشان میدهد.
برای اطلاعات بیشتر در مورد منطق مورد استفاده برای نمایش آیکونهای برنامه، از جمله انواع برنامههایی که آیکونهای برنامه آنها نمایش داده نمیشود، به مستندات مربوط به getActivityList() در مرجع API مراجعه کنید.
برای بهبود دسترسی، اندروید ۱۰ شامل تنظیمات زمانبندی قابل تنظیم توسط کاربر است. تغییرات API و تنظیمات با اندروید ۱۰ ارائه میشوند. اگر تنظیمات خود را سفارشی میکنید، مطمئن شوید که از این ویژگی پشتیبانی میشود. اگر عناصر رابط کاربری دارید که در دستگاه شما زمانبندی میشوند، از API زمانبندی در آنها استفاده کنید. برای اطلاعات بیشتر، به دستورالعملهای دسترسی توسعهدهندگان اندروید مراجعه کنید.
سند تعریف سازگاری اندروید ۱۰، نسخههای قبلی را با بهروزرسانیهایی برای ویژگیهای جدید و تغییرات در الزامات عملکردهای منتشر شده قبلی، تکرار میکند.
اندروید CTS یک صفحه یادداشت انتشار جداگانه دارد که بسیاری از تغییرات مهم اندروید ۱۰ را فهرست میکند.
بستههای CTS که از اندروید ۱۰ پشتیبانی میکنند، در صفحه دانلودهای CTS موجود هستند. کد منبع برای تستهای موجود را میتوان با برچسب android-cts-10_r1 در درخت متنباز همگامسازی کرد.
اندروید ۱۰ بستهای به نام CtsShimApex را معرفی میکند که برای نوشتن تستهای CTS برای مدیریت APEX باید از قبل روی دستگاه نصب شده باشد.
حالت مهار تست CTS به توسعهدهندگان کمک میکند تا تست یک دستگاه یا مجموعهای از دستگاهها را خودکار کنند.
با شروع از اندروید ۱۰، CTS در حالت Instant Apps اجرا میشود، که به معنی نصب APK آزمایشی به عنوان یک Instant App و اجرای تستها است.
علاوه بر حالت CTS برای برنامههای فوری، اندروید ۱۰ شامل تأییدکننده CTS برای برنامههای فوری نیز میشود.
اندروید ۱۰ یک تست CTS Verifier برای انطباق با Pro Audio اضافه میکند.
در اندروید ۱۰، تست MIDI تأییدکننده CTS، عملکرد MIDI را با رابطهای USB MIDI، رابطهای Bluetooth MIDI و یک مسیر دستگاه MIDI مجازی آزمایش میکند.
اندروید ۱۰ مکانیزم تفسیر نتایج CTS را بهروزرسانی میکند.
در اندروید ۱۰، تصویر سیستم عمومی (GSI) که برای اجرای تست انطباق CTS-on-GSI/VTS استفاده میشود، از userdebug به نوع ساخت کاربر تغییر میکند، زیرا GSI دارای امضای انتشار است. با این حال، دستور adb root که به دستگاه اندروید تحت آزمایش، مجوزهای ریشه میزبان را میدهد، در ساخت کاربر موجود نیست. این یک مشکل است زیرا VTS برای اجرا به adb root نیاز دارد.
دیباگ ramdisk برای فعال کردن دسترسی adb root در صورت باز بودن قفل دستگاه معرفی شده است. این امر با استفاده مجدد از همان system.img ساخت کاربر (چه GSI و چه system.img سازنده اصلی دستگاه)، جریان آزمایش را ساده میکند.
اندروید ۱۰ یک کلاس تست VTS جدید برای اعتبارسنجی Hardware Composer از طریق رابط readback در IComposerClient.hal اضافه میکند. اگر فروشندگان readback پیادهسازی نکنند، تستها به طور خودکار پاس میشوند.
در اندروید ۹ و پایینتر، برنامهها کتابخانههای مشترک جاوای مرتبط خود را در بارگذار کلاس برنامه بارگذاری میکردند. در اندروید ۱۰، این فریمورک از یک بارگذار کلاس متفاوت از بارگذار کلاس برنامه برای بارگذاری کتابخانههای مشترک جاوا که از طریق uses-library یا uses-static-library مرتبط هستند، استفاده میکند.
به طور کلی، برنامهها نباید به استفاده از یک بارگذار کلاس خاص متکی باشند، بنابراین این تغییر نباید رفتار برنامه را مختل کند. با این حال، اگر یک برنامه به استفاده از یک بارگذار کلاس واحد متکی باشد، آن رفتار مختل میشود. علاوه بر این، قابلیت مشاهده خصوصی بسته کلاسها در همان بسته همچنان پشتیبانی میشود، اما در کتابخانههای مشترک پشتیبانی نمیشود.
تولیدکنندگان دستگاه ممکن است هنگام آزمایش دستگاههای خود با اندروید ۱۰، با مشکلات سازگاری برنامهها مواجه شوند.
برای مشاهده فهرست کاملتری از بهبودهای مربوط به امنیت و حریم خصوصی، به صفحه بهبودهای امنیتی و حریم خصوصی اندروید ۱۰ مراجعه کنید.
احراز هویت با چهره به کاربران این امکان را میدهد که با نگاه کردن به جلوی دستگاه خود، قفل آن را باز کنند. اندروید ۱۰ از یک پشته جدید احراز هویت با چهره پشتیبانی میکند که میتواند فریمهای دوربین را به طور ایمن پردازش کند و امنیت و حریم خصوصی را در حین احراز هویت با چهره روی سختافزارهای پشتیبانیشده حفظ کند. اندروید ۱۰ همچنین راهی آسان برای پیادهسازیهای سازگار با امنیت فراهم میکند تا ادغام برنامهها را برای تراکنشهایی مانند بانکداری آنلاین یا سایر خدمات امکانپذیر سازد.
Trust agentها، مکانیزم اساسی مورد استفاده توسط مکانیزمهای احراز هویت ثالث مانند Smart Lock، فقط میتوانند در اندروید ۱۰ مدت زمان باز شدن قفل را افزایش دهند. Trust agentها دیگر نمیتوانند دستگاه قفل شده را باز کنند و فقط میتوانند دستگاه را حداکثر تا چهار ساعت قفل نشده نگه دارند.
اندروید ۱۰ از نسخه ۱۵ رابط برنامهنویسی OEMCrypto استفاده میکند.
اندروید ۱۰ از BoundsSanitizer (BoundSan) در بلوتوث و کدکها استفاده میکند. BoundSan از bounds sanitizer مربوط به UBSan استفاده میکند. این کاهش در سطح هر ماژول فعال میشود. این به ایمن نگه داشتن اجزای حیاتی اندروید کمک میکند و نباید غیرفعال شود. BoundSan در کدکهای زیر فعال است:
-
libFLAC -
libavcdec -
libavcenc -
libhevcdec -
libmpeg2 -
libopus -
libvpx -
libspeexresampler -
libvorbisidec -
libaac -
libxaac
اندروید ۱۰ قابلیت Integer Overflow Sanitization (IntSan) را در کدکهای نرمافزاری فعال میکند. اطمینان حاصل کنید که عملکرد پخش برای هر کدکی که در سختافزار دستگاه پشتیبانی نمیشود، قابل قبول است. IntSan در کدکهای زیر فعال است:
-
libFLAC -
libavcdec -
libavcenc -
libhevcdec -
libmpeg2 -
libopus -
libvpx -
libspeexresampler -
libvorbisidec
بهطور پیشفرض، بخشهای کد اجرایی برای فایلهای باینری سیستم AArch64 به عنوان یک راهکار کاهشدهندهی حملات استفادهی مجدد از کد درجا (just-in-time) با عنوان فقط-اجرا (غیرقابل خواندن) علامتگذاری میشوند. کدی که دادهها و کد را با هم ترکیب میکند و کدی که بهطور هدفمند این بخشها را بررسی میکند (بدون اینکه ابتدا بخشهای حافظه را بهعنوان قابل خواندن بازنگاشت کند) دیگر کار نمیکند. برنامههایی با SDK هدف اندروید ۱۰ (سطح API ۲۹ یا بالاتر) در صورتی تحت تأثیر قرار میگیرند که برنامه سعی کند بخشهای کد کتابخانههای سیستم فعالشده با حافظهی فقط-اجرا (XOM) را در حافظه بخواند، بدون اینکه ابتدا آن بخش را بهعنوان قابل خواندن علامتگذاری کند.
اسکودو یک تخصیصدهنده حافظه پویا در حالت کاربر است که برای مقاومت بیشتر در برابر آسیبپذیریهای مربوط به پشته طراحی شده است. این برنامه، توابع اولیه تخصیص و آزادسازی حافظه استاندارد C و همچنین توابع اولیه C++ را ارائه میدهد.
ShadowCallStack (SCS) یک حالت ابزار دقیق LLVM است که با ذخیره آدرس برگشتی یک تابع در یک نمونه ShadowCallStack که به طور جداگانه در prolog تابع توابع nonleaf اختصاص داده شده است و بارگذاری آدرس برگشتی از نمونه ShadowCallStack در epilog تابع، از بازنویسی آدرس برگشتی (مانند سرریز بافر پشته) جلوگیری میکند.
اندروید ۱۰ شامل قابلیتهای جدید زیر برای HAL صوتی است.
-
AudioSource -
AudioFormat -
AudioChannelMask
الزامات اضافی برای پیادهسازی HAL صوتی و زیرسیستم اضافه شده است.
اندروید جلوههای پیشپردازشی مانند حذف اکوی صوتی، کنترل خودکار گین و حذف نویز را ارائه میدهد. اندروید ۱۰ شامل الزامات جدیدی برای ضبط با VOICE_COMMUNICATION است.
اندروید ۱۰ شامل یک بازطراحی قابل توجه در مدیریت سیاستهای صوتی است تا انعطافپذیری بیشتری برای پشتیبانی از موارد پیچیده استفاده در خودرو فراهم کند.
اندروید ۱۰ شامل بهبودهای زیر برای صدای با وضوح بالا است.
- پشتیبانی شناور
- پشتیبانی از فرکانس ۱۹۲ کیلوهرتز
- پشتیبانی از هشت کانال
- گنجاندن اطلاعات زمانبندی
اندروید ۱۰ تجربه کاربری ضبط همزمان صدا را که نیاز به بیش از یک ضبط صدای فعال به طور همزمان دارد، بهبود میبخشد.
اندروید ۱۰ شامل یک API جدید به نام AudioPlaybackCapture است که به برنامهها این امکان را میدهد تا صدای پخش شده توسط برنامههای دیگر را کپی کنند. این ویژگی مشابه ضبط صفحه نمایش است، اما برای صدا. کاربرد اصلی آن، فعال کردن برنامههای پخش جریانی برای ضبط صدای پخش شده توسط بازیها است.
API ضبط، تأخیر برنامهای که صدای آن ضبط میشود را تحت تأثیر قرار نمیدهد.
اندروید ۱۰ با استفاده از رابط برنامهنویسی کاربردی AMidi NDK ، انتقال برنامههای صوتی حرفهای با استفاده از MIDI به پلتفرم اندروید را آسانتر میکند.
برای خلاصهای از تغییرات API دوربین، HAL دوربین و ماژول دوربین معرفیشده در اندروید ۱۰، به بهروزرسانیهای دوربین اندروید ۱۰ مراجعه کنید.
اندروید ۱۰ بهبودهایی در حریم خصوصی فریمورک دوربین ارائه میدهد. برای جلوگیری از افشای اطلاعات استاتیک دوربین که احتمالاً حساس هستند در CameraCharacteristics بدون رضایت کاربر، برنامهها باید مجوز CAMERA را برای بازیابی فرادادههای استاتیک با برچسب حساس به حریم خصوصی با استفاده از متد getCameraCharacteristics دریافت کنند.
برای دریافت لیستی از کلیدهای مشخصه دوربین که به مجوز CAMERA نیاز دارند، متد getKeysNeedingPermission را فراخوانی کنید.
اندروید ۱۰ یک ویژگی پرسوجوی پیکربندی مجدد جلسه اضافه کرده است که از طریق کنترل بیشتر بر منطق پیکربندی مجدد پارامترهای جلسه داخلی، امکان بهبود عملکرد را فراهم میکند.
اندروید ۱۰ رابطهای برنامهنویسی کاربردی (API) اختیاری مدیریت بافر دوربین HAL3 را معرفی میکند که به شما امکان میدهد منطق مدیریت بافر را برای دستیابی به تعادلهای مختلف در حافظه و تأخیر ضبط در پیادهسازیهای HAL دوربین پیادهسازی کنید.
اندروید ۱۰ یک تگ فراداده پویا به نام ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID معرفی کرده است که دوربین فیزیکی فعال زیرین یک دستگاه دوربین منطقی را نشان میدهد. برای اطلاعات بیشتر، به پشتیبانی از چند دوربین مراجعه کنید.
در اندروید ۱۰، دوربین HAL میتواند تعداد دوربینهای فیزیکی که میتوانند مستقیماً توسط یک برنامه باز شوند را کاهش دهد. برای جزئیات بیشتر، به پشتیبانی از چند دوربین مراجعه کنید.
در اندروید ۱۰، ماژولهای فروشنده میتوانند از طریق دو رابط استاندارد جدید HIDL، android.frameworks.cameraservice.service@2.0 و android.frameworks.cameraservice.device@2.0 ، به دستگاههای دوربین دسترسی داشته و آنها را کنترل کنند. برای راحتتر کردن استفاده از رابطهای HIDL، اندروید ۱۰ یک کتابخانه در دسترس فروشنده، libcamera2_vendor را نیز معرفی کرده است. این کتابخانه مشابه کتابخانه Camera NDK است، با چند تغییر جزئی.
اندروید ۱۰ ویژگیهایی را اضافه میکند که به فروشندگان دوربین اجازه میدهد جریانهای دوربین پیشنهادی را به مشتریان دوربین تبلیغ کنند و از یک API برای جستجوی ترکیبهای جریان پشتیبانی کنند.
دستگاههایی که اندروید ۱۰ را اجرا میکنند دیگر نیازی به پشتیبانی از ترکیب جریان با جریانهای فیزیکی زیردوربین ندارند. با این حال، دستگاههایی که اندروید ۱۰ را با دوربین HAL نسخه ۳.۵ اجرا میکنند، باید از isStreamCombinationSupported() پشتیبانی کنند تا به برنامهها اجازه دهند تا بررسی کنند که آیا ترکیب جریان حاوی جریانهای فیزیکی پشتیبانی میشود یا خیر.
برای اطلاعات بیشتر، به پشتیبانی از چند دوربین مراجعه کنید.
اندروید ۱۰ پشتیبانی دوربین بومی از تصاویر با فرمت فایل تصویری با راندمان بالا (HEIF) را ارائه میدهد که کیفیت تصویر بهبود یافته و اندازههای کوچکتری نسبت به تصاویر JPEG ارائه میدهند. دستگاهها برای پشتیبانی از تصاویر HEIF باید دارای رمزگذار HEIC یا HEVC باشند.
اندروید ۱۰ پشتیبانی بیشتری از فرمت جریان Y8، ابردادههای استاتیک آرایه فیلتر رنگ تک رنگ و نزدیک به مادون قرمز (NIR) و توابع DngCreator برای دوربینهای تک رنگ ارائه میدهد.
اندروید ۱۰ پشتیبانی بهتری از تماس اضطراری ارائه میدهد. در مواقع اضطراری، دستگاههایی که از IRadio HAL نسخه ۱.۴ پشتیبانی میکنند، میتوانند با استفاده از شمارههای اضطراری بازیابی شده از منبعی مانند سیم کارت، سیگنال شبکه یا پایگاه داده اندروید، تماس اضطراری برقرار کنند. شمارهها را میتوان بر اساس دستههای خدمات اضطراری مانند پلیس، آتش نشانی و آمبولانس طبقهبندی کرد.
APIهای تماس گروهی، افزونهای از APIهای eMBMS هستند که در اندروید ۹ اضافه شدهاند. APIهای جدید، استانداردی را برای برنامهها تعریف میکنند تا با تعامل با بستههای میانافزار eMBMS، به تماسهای گروهی پخش سلولی بپیوندند و در آنها پخش کنند. تماسهای گروهی برای عملکرد صحیح نیاز به پشتیبانی از فروشنده چیپست، فروشنده میانافزار و اپراتور تلفن همراه دارند. مستندات توسعهدهنده در developer.google.com قرار دارد.
اندروید ۱۰ قابلیتهای سیمکارت از راه دور را معرفی میکند که به برنامههای پیامرسان روی دستگاه میزبان اندروید اجازه میدهد تا با استفاده از مکانیسمهایی مانند بلوتوث، از طریق تلفنها پیامک ارسال کنند. برای اطلاعات بیشتر، به مستندات مرجع برای متد getSubscriptionType و ثابت SUBSCRIPTION_TYPE_REMOTE_SIM مراجعه کنید.
در اندروید ۱۰، کلاس EuiccManager از دستگاههایی با چندین سیمکارت تعبیهشده (eSIM) یا eUICC پشتیبانی میکند.
برای دستگاههایی که اندروید ۱۰ را اجرا میکنند و از eSIM پشتیبانی میکنند، باید یک آرایه شناسه اسلات eUICC غیرقابل جابجایی تعریف شود. دستگاهها همچنین باید از IRadio HAL نسخه ۱.۴ و IRadioConfig HAL نسخه ۱.۲ پشتیبانی کنند. برای اطلاعات بیشتر، به پیادهسازی الزامات eSIM و HAL مراجعه کنید.
اندروید ۱۰ پشتیبانی از ۵G غیرمستقل (NSA) را اضافه میکند. ۵G NSA راهکاری برای شبکههای ۵G است که در آنها شبکه توسط زیرساخت ۴G موجود پشتیبانی میشود. در اندروید ۱۰، دستگاهها میتوانند هنگام اتصال به شبکه ۵G، یک نماد ۵G را در نوار وضعیت نمایش دهند.
اندروید ۱۰ سرویس پیشنهاد حساب کاربری تلفن را معرفی میکند که به کاربران اجازه میدهد هنگام برقراری تماس، پیشنهادهایی برای حسابهای کاربری تلفن خود دریافت کنند.
اندروید ۱۰ کد رابط کاربری تنظیمات شبکه تلفن همراه را دوباره معماری کرد و آن را از پشته Telephony به پشته Settings منتقل کرد. برای پشتیبانی از کد منتقل شده، مقادیر پیکربندی تنظیمات شبکه تلفن همراه زیر را از منابع اندروید به منابع CarrierConfig تغییر دهید:
config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL
config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL
config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY
config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL
شناسههای دائمی دستگاه (IMEI/MEID، IMSI و سریال ساخت) توسط یک مجوز ممتاز محافظت میشوند و دسترسی به آنها به برنامههای مالک دستگاه و پروفایل نیز اعطا میشود. از آنجا که IMSI و شماره سریال سیمکارت توسط اپراتور ارائه میشوند، دسترسی به این شناسهها به بستههایی با امتیازات اپراتور اعطا میشود.
اندروید به طور مداوم کیفیت شبکه متصل و کیفیت شبکههای موجود را ارزیابی میکند. اندروید ۱۰ الگوریتمها و رویههای بهروز شدهای برای انتخاب و جابجایی بین شبکههای وایفای دارد.
اندروید ۱۰ یک متد API اختیاری به نام setDeviceMobilityState() را در WifiManager معرفی میکند که فاصله بین اسکنهای ترجیحی تخلیه بار شبکه (PNO) را در زمانی که دستگاه ثابت است، افزایش میدهد تا مصرف برق کاهش یابد.
در اندروید ۱۰، دستگاههایی که دارای قابلیت وایفای اپراتور هستند، بهطور خودکار به شبکههای وایفای پیکربندیشده اپراتور (شبکههایی با گواهیهای کلید عمومی) متصل میشوند.
در اندروید ۱۰، دستگاهها میتوانند از Wi-Fi Easy Connect که از پروتکل تأمین دستگاه (DPP) معرفی شده توسط اتحادیه Wi-Fi (WFA) استفاده میکند، برای تأمین و پیکربندی دستگاههای Wi-Fi استفاده کنند.
اندروید ۱۰ حالت وایفای با تأخیر کم را معرفی میکند که تراشه وایفای را برای کاهش تأخیر پیکربندی میکند.
به عنوان بخشی از تشکیل چتر سرویس "IP Server"، dnsmasq در حال حذف شدن است. اندروید ۱۰، کاربرد عملکردی سرور DHCPv4 خود را با یک جزء جداگانه جایگزین میکند که عمدتاً با زبان جاوا نوشته شده است تا بهتر با صفحه کنترل چارچوب جاوا ادغام شود. این امر امنیت و قابلیت بهروزرسانی سرور DHCP را بهبود میبخشد. برای جزئیات بیشتر، به packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java مراجعه کنید.
برای اجرای این تغییر نیازی به هیچ اقدامی نیست: همه دستگاههایی که به اندروید ۱۰ ارتقا یافته و منتشر میشوند، به طور پیشفرض DhcpServer استفاده میکنند. اگر تنظیماتی در سرور DHCP دارید، میتوانید با تنظیم تنظیم سراسری tether_enable_legacy_dhcp_server=1 ، به رفتار اندروید ۹ برگردید. DhcpServer جدید در ماژول اجزای شبکه گنجانده شده است، بنابراین هرگونه سفارشیسازی در عملکرد سرور DHCP باید به صورت upstream انجام شود.
اندروید ۱۰ پشتیبانی از استانداردهای امنیتی Wi-Fi Protected Access 3 (WPA3) و Wi-Fi Enhanced Open را اضافه میکند تا حریم خصوصی و مقاومت بهتری در برابر حملات شناخته شده ارائه دهد.
وایفای دایرکت که با نام وایفای P2P نیز شناخته میشود، به دستگاههای پشتیبانیکننده اجازه میدهد تا با استفاده از پروتکل وایفای دایرکت، بدون دسترسی به اینترنت یا شبکه تلفن همراه، یکدیگر را کشف کرده و مستقیماً به یکدیگر متصل شوند.
از اندروید ۱۰، تصادفیسازی مک (MAC randomization) به طور پیشفرض برای حالت کلاینت، SoftAp و Wi-Fi Direct فعال است. دستگاهها باید گزینهای را برای فعال یا غیرفعال کردن تصادفیسازی مک برای هر SSID در رابط کاربری سیستم ارائه دهند.
اندروید ۱۰ پشتیبانی از ویژگیهای Passpoint R2 را معرفی میکند. Passpoint R2 ثبتنام آنلاین (OSU) را پیادهسازی میکند، که روشی استاندارد برای ارائه پروفایلهای Passpoint جدید است. اندروید ۱۰ از ارائه پروفایلهای EAP-TTLS با استفاده از SOAP-XML پشتیبانی میکند.
NFC امن اجازه میدهد شبیهسازی کارت NFC خارج از میزبان فقط زمانی فعال شود که صفحه نمایش دستگاه قفل نباشد. پیادهسازی این ویژگی به کاربران این امکان را میدهد که NFC امن را برای بهبود امنیت فعال کنند.
در اندروید ۱۰، دیگر نیازی به Android Beam نیست و رابطها و متدهای زیر منسوخ شدهاند.
رابطها:
-
NfcAdapter.CreateBeamUrisCallback -
NfcAdapter.CreateNdefMessageCallback -
NfcAdapter.OnNdefPushCompleteCallback
روشها:
-
createBeamUris -
invokeBeam -
isNdefPushEnabled -
setBeamPushUris -
setBeamPushUrisCallback -
setNdefPushMessage -
setNdefPushMessageCallback -
setOnNdefPushCompleteCallback -
createNdefMessageCallback -
onNdefPushCompleteCallback
برای استفاده از Android Beam، ثابت ویژگی android.sofware.nfc.beam را گزارش دهید.
اندروید ۱۰، ASurfaceControl را اضافه میکند، روشی جدید برای SurfaceFlinger جهت پذیرش بافرها.
اندروید ۱۰ یک سیستم لایهبندی برای GLES معرفی میکند.
اندروید ۱۰ رابط EGL 1.5 را پیادهسازی میکند. برای اطلاعات بیشتر در مورد ویژگیهای جدید EGL 1.5، به مشخصات انتشارهای Khronos EGL 1.5 مراجعه کنید.
اندروید ۱۰ از گرافیک Vulkan 1.1 پشتیبانی میکند. این پلتفرم همچنین از VK_KHR_swapchain نسخه ۷۰ پشتیبانی میکند، بنابراین برنامه Vulkan قادر به ایجاد VkImage با پشتیبانی حافظه swapchain است.
اندروید ۱۰ پشتیبانی از نرخ تازهسازی عملکرد را اضافه میکند. این ویژگی به طور پیشفرض غیرفعال است.
در اندروید ۱۰، زمینه Audio HAL برای شناسایی صداها به AudioAttributes.usage نگاشت میشود. اندروید از یک نمونه AUDIO_DEVICE_OUT_BUS به ازای هر زمینه پشتیبانی میکند. IAudioControl HAL افزونههای مخصوص خودرو را برای Audio HAL فراهم میکند.
اندروید ۱۰ گزینهای برای ناوبری سیستمی کاملاً مبتنی بر اشاره معرفی میکند. برای اطلاعات بیشتر در مورد نحوه آمادهسازی برنامهها برای استفاده از این ویژگی، به صفحه ناوبری مبتنی بر اشاره در سایت توسعهدهندگان اندروید مراجعه کنید.
اندروید ۱۰ بهروزرسانیهایی را برای API شبکههای عصبی و HAL شبکههای عصبی معرفی میکند. برای خلاصهای از تغییرات، به شبکههای عصبی مراجعه کنید.
مستندات جدید و بهروز شده شبکههای عصبی برای اندروید ۱۰:
- نمای کلی
- بافر سختافزاری
- اجرای پشت سر هم و صفهای پیام سریع
- ذخیرهسازی کامپایل
- کشف و تخصیص دستگاه
- افزونههای فروشنده
حسگرها HAL 2.0 از صفهای پیام سریع (FMQ) برای ارسال رویدادهای حسگر از HAL به چارچوب حسگرهای اندروید پشتیبانی میکند.
اندروید ۱۰ شامل تنظیماتی برای توسعهدهندگان است که به آنها اجازه میدهد تمام حسگرهای دستگاه را خاموش کنند . این ویژگی به توسعهدهندگان کمک میکند تا عملکرد برنامه خود را در موقعیتهایی که حسگرها از دسترس خارج میشوند، آزمایش کنند و همچنین به کاربران راهی برای کنترل حسگرهای دستگاه خود میدهد.
اگر دستگاههای شما از پیادهسازی پیشفرض SensorService ، CameraService و AudioPolicyService استفاده میکنند، نیازی به سفارشیسازی اضافی در طراحی مرجع نیست. اگر حسگرهای دیگری دارید، برای جزئیات بیشتر در مورد پشتیبانی از این ویژگی، به بخش «سفارشیسازی» مراجعه کنید.
اندروید ۱۰ اجزای رسانهای قابل بهروزرسانی را ارائه میدهد که بهروزرسانی اجزای سیستم ماژولار مرتبط با رسانه را از طریق زیرساخت فروشگاه گوگل پلی یا از طریق مکانیسم بیسیم (OTA) ارائه شده توسط شرکا امکانپذیر میکند.
اندروید ۱۰ کارایی و قابلیت استفاده از APIهای MediaDrm Java و NDK را بهبود میبخشد.
اندروید ۱۰ از رمزگشایی AV1 SW پشتیبانی میکند.
اندروید ۱۰ تنظیمات مجوز بیشتری را برای شفافیت و حفظ حریم خصوصی کاربر ارائه میدهد.
از اندروید ۱۰ به بعد، دسترسی به دادههای مربوط به وابستگی مخاطبین که توسط کامپوننت Contacts Provider مدیریت میشوند، نسبت به اندروید ۹ و پایینتر، متفاوت است. این تغییرات در مورد دسترسی به دادهها، حریم خصوصی کاربر را در تمام دستگاههای اندروید ۱۰ که از کامپوننت Contacts Provider استفاده میکنند، بهبود میبخشد. پایگاه داده اصلی دیگر حاوی دادههای وابستگی مخاطبین نیست. بنابراین برنامهها نمیتوانند در آن بنویسند یا از آن بخوانند.
انتظار میرود تغییرات اندروید ۱۰ تأثیر زیادی بر APIها داشته باشد. اگر برنامههای شما به ویژگیهای منسوخشدهای که در Contacts Provider و Affinities Information ذکر شده است، متکی هستند، ممکن است بخواهید برنامههای خود را برای جبران هرگونه تغییر بهروزرسانی کنید. علاوه بر این، اگر از نسخهای دستکاریشده از Contacts Provider استفاده میکنید، باید Contacts Provider خود را بهروزرسانی کنید.
مجوزهای موقعیت مکانی سهگانه در اندروید ۱۰ به کاربران کنترل بیشتری بر نحوه دسترسی برنامهها به موقعیت مکانی دستگاهشان میدهد.
اندروید ۱۰ دارای یک یادآوری موقعیت مکانی دسترسی در پسزمینه است که شفافیت در مورد میزان دسترسی برنامهها به موقعیت مکانی دستگاه را افزایش میدهد و به کاربران کمک میکند تا کنترل چنین دسترسیهایی را حفظ کنند.
وقتی یک برنامه موقعیت مکانی یک دستگاه را درخواست میکند، برنامه میتواند منتظر پاسخ درخواست بماند یا با استفاده از شنوندههای موقعیت مکانی فعال، بهروزرسانی موقعیت مکانی فرصتطلبانه را دریافت کند. از اندروید ۱۰ به بعد، برای دریافت بهروزرسانیهای موقعیت مکانی فرصتطلبانه ، توسعهدهندگان باید مشخص کنند که به بهروزرسانیهای موقعیت مکانی غیرفعال از کلاس FusedLocationProviderClient نیاز دارند.
در اندروید ۱۰، برنامههای بدون مجوز که پنجرهی قابل مشاهدهای ندارند، نمیتوانند بهطور خودکار در پسزمینه اجرا شوند. این تغییر، نمایش تبلیغات پاپآپ و دسترسیهای مخرب را مسدود میکند. برای فعال کردن این قابلیت، نیازی به انجام هیچ کاری نیست.
در اندروید ۱۰، برنامهها نمای خام محدودی از سیستم فایل دارند و دسترسی مستقیمی به مسیرهایی مانند /sdcard/DCIM ندارند. با این حال، برنامهها دسترسی خام کامل به مسیرهای خاص بسته خود را حفظ میکنند، همانطور که توسط هر روش قابل اجرا مانند Context.getExternalFilesDir() برگردانده میشود. برنامهها همچنان دسترسی خام کامل به مسیرهای خاص بسته خود دارند.
برای ارائه جزئیات مناسب در مورد اشتراکگذاری دادهها، از دستورالعملهای جعبه شنی برنامه برای اشتراکگذاری فایلها استفاده کنید.
در اندروید ۱۰، دسترسی به کلیپبورد تغییر کرده است، به طوری که محتوای کلیپبورد را نمیتوان با فراخوانی ClipboardManager.getPrimaryClip یا با اضافه کردن یک شنونده onPrimaryClipChangedListener برای اطلاعرسانی هنگام تغییر کلیپبورد مشاهده کرد. این امر باعث افزایش حریم خصوصی کاربر و غیرفعال کردن برنامههای مخرب از تغییر کلیپبورد میشود.
در اندروید ۱۰، دسترسی خواندن فقط به برنامه فعلی با فوکوس ورودی یا به صفحه کلید فعلی مجاز است. اکنون فراخوانی شنونده ClipboardManager.onPrimaryClipChanged() فقط برای برنامههایی که چنین محدودیتهایی را رعایت میکنند، اجرا میشود. ClipboardManager.getPrimaryClip و ClipboardManager.getPrimaryClipDescription در صورتی که برنامه درخواستکننده ویرایشگر روش ورودی پیشفرض (IME) نباشد یا فوکوس ورودی نداشته باشد، null را برمیگردانند.
کاربران اکنون وقتی یک برنامه در پسزمینه به موقعیت مکانی دستگاه دسترسی پیدا میکند، یک پنجره تشخیص فعالیت را مشاهده میکنند. مجوزهای زمان اجرا با محدودیت شدید باید به درستی در اندروید ۱۰ فهرست شوند.
اندروید ۱۰ مجوز MANAGE_DEVICE_ADMINS را از امضا یا ممتاز به فقط امضا تغییر میدهد. این بدان معناست که فقط برنامههای امضا شده توسط پلتفرم میتوانند برنامههای دیگر را به عنوان مدیر دستگاه تنظیم کنند.
اندروید ۱۰ تعدادی ویژگی جدید API پلتفرم اندروید مربوط به اشتراکگذاری را ارائه میدهد. اگر کد Share Sheet را در پیادهسازی خود تغییر دادهاید، مطمئن شوید که پیادهسازی شما از این ویژگیهای جدید پشتیبانی میکند. اگر کد Share Sheet را در پیادهسازی خود تغییر ندادهاید، نیازی به انجام کاری برای پشتیبانی از این ویژگیهای جدید ندارید.
ویژگی Signed Config امکان تعبیه پیکربندی محدودیتهای رابط کاربری غیر SDK را در APKها فراهم میکند. این امر امکان حذف رابطهای کاربری غیر SDK خاص از لیست ممنوعه را فراهم میکند تا AndroidX بتواند با خیال راحت از آنها استفاده کند. با این تغییر، AndroidX میتواند پشتیبانی از ویژگیهای جدید را در نسخههای قدیمیتر اندروید اضافه کند.
اندروید ۱۰ شامل یک لایه انتزاعی cgroup و پروفایلهای وظیفه است که توسعهدهندگان میتوانند از آنها برای توصیف مجموعهای از محدودیتها برای اعمال روی یک نخ یا یک فرآیند استفاده کنند.
اندروید ۱۰ از حالت جدید lmkd پشتیبانی میکند که از مانیتورهای اطلاعات توقف فشار هسته (PSI) برای تشخیص فشار حافظه استفاده میکند.
In Android 10, Doze mode can be enabled on always-on devices as well as on battery-powered devices.
Android 10 introduces a new battery saver schedule option called based on routine . Routine battery saver allows an app chosen by the OEM to provide signals to the system for more intelligent battery saver scheduling. This option requires configuration, and is optional to implement.
In Android 10, IPowerStats.hal replaces the power stats collection APIs in IPower.hal . While the power HAL still supports the APIs, they'll be migrated exclusively to the power stats HAL in the future.
The power stats HAL includes new APIs to support the collection of data from on-device power measurement, for supported devices. The existing power stats collection APIs are also updated to improve flexibility. The power hinting APIs remain in power HAL and aren't changing.
The thermal framework in Android 10 abstracts device interfaces for the thermal subsystem temperature sensor, including CPU, GPU, battery, skin, and cooling device. The framework introduces a polling interface to query thermal status to initiate throttling, and a callback interface to send a message to the user when a threshold is exceeded.
Android 10 provides the new data types through the IThermalService interface using these three new methods:
-
getCurrentThermalStatus()returns the current thermal status of the device as an integer, unless the device is undergoing throttling. -
addThermalStatusListener()adds a listener. -
removeThermalStatusListener()removes a previously added listener.
Apps add and remove listeners and access temperature status in the PowerManager class. Only a trusted system service such as an Android API or device manufacturer API can access information about associated causal events. Device manufacturers or SoC makers must implement thermal HAL 2.0 to enable the full functionality of the new thermal framework.
For a thermal mitigation implementation example, see the Reference implementation .
Android Pony EXpress (APEX) is a new container format used in the install flow for modular system components.
Dynamic partitions introduce a userspace partitioning system to Android, allowing partitions to be created, resized, or destroyed during OTA updates. Device makers don't have to worry about the individual sizes of partitions, such as system , vendor , and product . Instead, one big super partition is allocated, and subpartitions can be sized dynamically within it.
Dynamic system updates (DSU) lets you make an Android system image that users can download from the internet and try out without the risk of corrupting the current system image.
Android 10 supports backup and restore functionality for all users on a device. Previously, backup and restore was only available for the system user. Backup and restore for nonsystem users is turned off by default as it has only partial coverage for settings, wallpaper, and system components.
Users working with userdebug or eng builds expect to be able to efficiently remount the system partition as read-write and then add or modify any number of files without reflashing the system image. You can use Overlayfs , which automatically sets up backing storage for a writable file system as an upper reference, and mounts over the lower. These actions happen in the adb disable-verity and adb remount requests. For more details, see the Overlayfs README in AOSP.
In Android 10, shared libraries are available in the recovery partition, which eliminates the need for all recovery mode executables to be static. The shared libraries are located under the /system/lib (or /system/lib64 for 64-bit devices) directory in the partition.
To add a new shared library to the recovery partition, add recovery_available: true or recovery: true to Android.bp of the shared library. The former installs the library to both the system and recovery partitions, while the latter installs it only to the recovery partition.
Shared library support can't be built with Android's make-based build system. To convert an existing static executable for the recovery mode to a dynamic one, remove LOCAL_FORCE_STATIC_EXECUTABLE := true in Android.mk or static_executable: true (in Android.bp ).
Android 10 introduces the User Data Checkpoint (UDC) feature , which allows Android to roll back to its previous state when an Android over-the-air (OTA) update fails.