این صفحه خلاصهای از ویژگیهای اصلی نسخه اندروید ۹ را ارائه میدهد و پیوندهایی به اطلاعات بیشتر ارائه میدهد. این خلاصه ویژگیها بر اساس محل مستندات ویژگی در این سایت سازماندهی شدهاند. برای راهنمایی در مورد جابجایی بخشها و تغییر نام، به بهروزرسانیهای سایت در آگوست ۲۰۱۸ مراجعه کنید.
ساختن
تصویر سیستم عمومی (GSI)
یک تصویر سیستم عمومی (GSI) یک تصویر سیستم با پیکربندیهای تنظیمشده برای دستگاههای اندروید است. تصویر سیستم عمومی (GSI) شامل جزئیاتی در مورد تفاوتهای بین GSIها برای دستگاههایی است که با اندروید ۹ عرضه میشوند و دستگاههایی که به اندروید ۹ ارتقا مییابند.
معماری
لایه انتزاعی سختافزار (HAL)
سازگاری با چارچوب HIDL
تأیید سازگاری معکوس چارچوب HIDL روشی برای تأیید سازگاری معکوس چارچوب است.
HAL های پویا در دسترس
HAL های پویا از خاموش شدن پویای زیرسیستمهای سختافزاری اندروید در زمانی که در حال استفاده نیستند یا نیازی به آنها نیست، پشتیبانی میکنند.
هایدل
بلوک حافظه HIDL
HIDL MemoryBlock یک لایه انتزاعی است که بر روی hidl_memory ، HIDL @1.0::IAllocator و HIDL @1.0::IMapper ساخته شده است. این لایه برای سرویسهای HIDL طراحی شده است که دارای چندین بلوک حافظه هستند که یک هیپ حافظه واحد را به اشتراک میگذارند.
همپوشانیهای درخت دستگاه
پوششهای فشرده
اندروید ۹ و بالاتر، هنگام استفاده از نسخه ۱ هدر جدول درخت دستگاه، از پوششهای فشرده در تصویر پوشش لکهای درخت دستگاه (DTBO) پشتیبانی میکند.
بهروزرسانیهای DTO
اندروید ۹ و بالاتر مستلزم آن است که بوتلودر قبل از تغییر ویژگیهای تعریفشده در پوششهای درخت دستگاه (DTOها)، قطعه درخت دستگاه یکپارچه را به هسته منتقل کند.
نسخهبندی هدر تصویر DTBO
اندروید ۹ و بالاتر شامل یک فیلد نسخه در هدر تصویر DTBO است.
تأیید DTBO
اندروید ۹ و بالاتر به یک پارتیشن DTBO نیاز دارد. برای اضافه کردن گرهها یا ایجاد تغییر در ویژگیهای SoC DT، بوتلودر باید به صورت پویا یک DT مخصوص دستگاه را روی SoC DT قرار دهد. برای اطلاعات بیشتر به بخش کامپایل و تأیید مراجعه کنید.
انطباق هسته
اندروید ۹ و بالاتر شامل الزاماتی است که بر هسته، رابطهای آن و استفاده از DTBOها تأثیر میگذارد. برای اطلاعات بیشتر، به این صفحات مراجعه کنید:
- نسخهها و بهروزرسانیهای پایدار هسته
- هستههای رایج اندروید
- الزامات هسته ماژولار
- الزامات رابط
- همپوشانیهای درخت دستگاه
فروشنده NDK
تغییرات طراحی
برای اطلاعات بیشتر در مورد تغییرات طراحی VNDK در اندروید ۹ و بالاتر، به این صفحات مراجعه کنید:
- کیت توسعه بومی فروشنده (VNDK)
- پشتیبانی از سیستم ساخت VNDK
- ابزار تعریف VNDK
- راهنماها، قوانین و سیاستگذاری عمومی
- افزونههای VNDK
- فضای نام لینکر
بررسیکننده ABI
صفحه پایداری ABI، بررسیکننده رابط دودویی برنامه (ABI) را شرح میدهد که تضمین میکند تغییرات اعمال شده در کتابخانههای VNDK، انطباق ABI را حفظ میکنند.
اسنپشاتهای VNDK
یک تصویر سیستم میتواند از اسنپشاتهای VNDK برای ارائه کتابخانههای صحیح VNDK به تصاویر فروشنده استفاده کند، حتی زمانی که تصاویر سیستم و فروشنده از نسخههای مختلف اندروید ساخته شده باشند.
شیء رابط فروشنده (شیء VINTF)
صفحات زیر در بخش شیء رابط فروشنده، بهروزرسانیها در اندروید ۹ و بالاتر را شرح میدهند:
برنامهی منسوخ شدن HIDL
صفحات زیر نحوه منسوخ شدن و حذف HAL های HIDL توسط اندروید را شرح میدهند:
بوت لودر
پارتیشنهای محصول
اندروید ۹ و بالاتر از پارتیشنهای building /product با استفاده از سیستم ساخت اندروید پشتیبانی میکند. پیش از این، اندروید ۸.x جداسازی اجزای مخصوص سیستم روی تراشه (SoC) را از پارتیشن /system به پارتیشن /vendor بدون اختصاص فضا برای اجزای مخصوص OEM ساخته شده از سیستم ساخت اندروید، اجباری میکرد.
انطباق با دلیل بوت متعارف
صفحه Canonical Boot Reason تغییرات مربوط به مشخصات دلیل بوت بوت لودر در اندروید ۹ و بالاتر را شرح میدهد.
سیستم به عنوان ریشه
همه دستگاههایی که با اندروید ۹ و بالاتر راهاندازی میشوند باید از system-as-root استفاده کنند که ramdisk.img در system.img (که با نام no-ramdisk نیز شناخته میشود) ادغام میکند، که به نوبه خود به عنوان rootfs نصب میشود.
نسخهبندی هدر تصویر بوت
در اندروید ۹ و بالاتر، هدر تصویر بوت شامل فیلدی است که نسخه هدر را نشان میدهد . بوتلودر باید این فیلد نسخه را بررسی کرده و هدر را بر اساس آن تجزیه کند.
DTBO در حال بهبودی
برای جلوگیری از خرابیهای OTA به دلیل عدم تطابق بین تصویر بازیابی و پارتیشن DTBO در دستگاههای غیر A/B، تصویر بازیابی باید حاوی اطلاعاتی از تصویر DTBO باشد.
نمایش
برشهای نمایشگر
بریدگیهای نمایشگر به توسعهدهندگان اپلیکیشن اجازه میدهد تا تجربیات فراگیر و لبه به لبه ایجاد کنند و در عین حال فضای کافی برای حسگرهای مهم در جلوی دستگاهها را فراهم کنند.
چرخش پیشنهادات
بهروزرسانیهای مربوط به رفتار چرخش صفحه نمایش در اندروید ۹ و بالاتر شامل پشتیبانی از یک کنترل کاربرپسند برای پین کردن چرخش صفحه نمایش به حالت افقی یا عمودی، حتی در صورت تغییر موقعیت دستگاه، میشود.
انتقالهای برنامه همگامسازی شده
انتقالهای هماهنگشدهی برنامهها امکان ایجاد انیمیشنهای جدید برای انتقال برنامهها را فراهم میکنند.
طبقهبندی متن (قبلاً TEXTCLASSIFIER)
اندروید ۹ و بالاتر شامل یک سرویس طبقهبندی متن است که روش پیشنهادی برای پیادهسازی طبقهبندی متن است و همچنین یک پیادهسازی پیشفرض از سرویس را نیز شامل میشود.
رنگ با طیف گسترده
اندروید ۹ و بالاتر از طیف رنگی گسترده پشتیبانی میکند، از جمله:
- محدوده دینامیکی بالا (HDR)
- پردازش محتوا در فضای رنگی BT2020، اما نه به عنوان یک فضای داده هدف نهایی
برای استفاده از رنگ با طیف رنگی گسترده، کل مجموعه نمایشگر دستگاه (مانند صفحه نمایش، آهنگساز سختافزار، پردازنده گرافیکی) باید از رنگهای با طیف رنگی گسترده یا فرمتهای بافر پشتیبانی کند. دستگاهها حتی اگر سختافزار از محتوای با طیف رنگی گسترده پشتیبانی کند، ملزم به ادعای پشتیبانی از آن نیستند. با این حال، برای بهرهمندی کامل از سختافزار، رنگ با طیف رنگی گسترده باید فعال باشد. برای جلوگیری از یک تجربه بصری متناقض، رنگ با طیف رنگی گسترده نباید در طول زمان اجرا خاموش شود.
سازگاری
سند تعریف سازگاری اندروید
سند تعریف سازگاری اندروید ۹ (CDD) با بهروزرسانیهایی برای ویژگیهای جدید و تغییرات در الزامات مربوط به عملکردهای منتشر شده قبلی، نسخههای قبلی را تکرار میکند.
تنظیمات
ویجتهای بهتر برای برنامهها
چارچوب ویجت برنامه اندروید، قابلیت مشاهده بیشتری را در تعاملات کاربر ارائه میدهد، به ویژه هنگامی که کاربر ویجتها را حذف یا به صورت دستی اضافه میکند. این قابلیت به طور پیشفرض با Launcher3 ارائه میشود.
تولیدکنندگان باید برنامههای لانچر خود (که همراه دستگاهها ارائه میشوند) را برای پشتیبانی از این ویژگی بهروزرسانی کنند، اگر مبتنی بر Launcher3 نباشند. تولیدکنندگان اصلی تجهیزات (OEM) باید از فیلد جدید widgetFeatures در لانچر پیشفرض خود پشتیبانی کنند.
توجه داشته باشید که این ویژگی فقط زمانی به طور کامل کار میکند که لانچرها آن را مطابق انتظار پیادهسازی کنند. AOSP شامل یک پیادهسازی نمونه است. برای کد نمونه ارائه شده، به AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca مراجعه کنید.
اعلانهای تغییر وضعیت دستگاه به نصبکنندگان بسته
هر زمان که تغییری در ویژگیهایی مانند زبان یا تراکم نمایش ایجاد شود، میتوان یک اعلان سیستمی محافظتشده را به برنامههایی که مجوز INSTALL_PACKAGES دارند، ارسال کرد. گیرندهها را میتوان در مانیفست ثبت کرد و یک فرآیند برای دریافت اعلان فعال میشود. این برای نصبکنندگان بستهای که مایل به نصب اجزای اضافی برنامهها پس از چنین تغییراتی هستند، مفید است، که امری غیرمعمول است، زیرا تغییرات پیکربندی واجد شرایط برای راهاندازی این اعلان نادر هستند.
کد منبع اعلان تغییر وضعیت دستگاه در مکانهای زیر در platform/frameworks/base قرار دارد:
-
api/system-current.txt -
core/java/android/content/Intent.java -
core/res/AndroidManifest.xml -
services/core/java/com/android/server/am/ActivityManagerService.java
معماری اطلاعات
تغییرات در معماری اطلاعات برای برنامه تنظیمات، قابلیتهای بیشتر و پیادهسازی آسانتری را فراهم میکند.
آزمایشها
تست
ابزار خط فرمان Atest به شما امکان میدهد تستهای اندروید را به صورت محلی بسازید، نصب و اجرا کنید و سرعت اجرای مجدد تستها را بدون نیاز به دانش در مورد گزینههای خط فرمان کنترل تست Trade Federation به میزان قابل توجهی افزایش دهید.
مجموعه تست سازگاری
دانلودهای CTS
بستههای مجموعه تست سازگاری (CTS) که از اندروید ۹ پشتیبانی میکنند، در صفحه دانلودهای CTS موجود هستند. کد منبع برای تستهای موجود را میتوان با برچسب android-cts-9.0_r1 در درخت منبع باز همگامسازی کرد.
گزینههای CTS
برای اندروید ۹، CTS نسخه ۲ دستور و آرگومان زیر را دریافت میکند:
-
run retryتمام تستهایی که از جلسات قبلی ناموفق بودهاند یا اجرا نشدهاند را دوباره امتحان میکند. -
'--shard-countیک CTS را به تعداد مشخصی از تکههای مستقل تقسیم میکند تا به صورت موازی روی چندین دستگاه اجرا شود.
علاوه بر این، دستور --retry-type که قبلاً مستند نشده بود، به همان مرجع دستور کنسول CTS نسخه ۲ اضافه شده است.
سرویس عنصر امن (SE)
سرویس عنصر امن (Secure Element) با شناسایی اینکه آیا دستگاهها پیادهسازی SE HAL دارند و اگر دارند، چه تعداد، عناصر امن پشتیبانیشده توسط پلتفرم جهانی را بررسی میکند. این به عنوان مبنایی برای آزمایش API و پیادهسازی عنصر امن زیربنایی استفاده میشود.
جعبه فیوز سنسور
جعبه ادغام حسگر در تست ادغام حسگر Camera Image Test Suite (Camera ITS) و تست همگامسازی چند دوربین استفاده میشود و یک محیط تست ثابت برای اندازهگیری دقت برچسب زمانی دوربین و سایر حسگرها برای تلفنهای اندروید فراهم میکند. برای اطلاعات بیشتر به این صفحات مراجعه کنید:
- راهنمای شروع سریع جعبه فیوژن سنسور، مراحل راهاندازی تست فیوژن سنسور و جعبه فیوژن سنسور را برای اولین بار ارائه میدهد.
- مونتاژ جعبه فیوژن سنسور مراحل مونتاژ جعبه فیوژن سنسور را ارائه میدهد.
میدان دید وسیع، ITS-in-a-box
سامانهی ITS با میدان دید وسیع (Wide Field of View ITS-in-a-box) یک سامانهی خودکار است که برای آزمایش سیستمهای دوربین با میدان دید وسیع (WFoV) و میدان دید منظم (RFoV) در سامانهی ITS دوربین طراحی شده است.
مجموعه تست فروشنده
معماری کنترلکننده میزبان
معماری کنترلکننده میزبان Vendor Test Suite (VTS) ، معماری چارچوب تست VTS است که با سرویس ارائه تست مبتنی بر ابر آن ادغام شده است.
تست HAL آگاه از نام سرویس
تست HAL آگاه از نام سرویس VTS، از دریافت نام سرویس یک نمونه HAL مشخص بر اساس دستگاهی که تستهای VTS روی آن اجرا میشوند، پشتیبانی میکند.
بررسی قابلیت آزمایش HAL
بررسی قابلیت تست VTS HAL شامل یک روش زمان اجرا برای استفاده از پیکربندی دستگاه برای شناسایی تستهای VTS است که باید برای آن دستگاه هدف نادیده گرفته شوند.
زیرساخت تست خودکار
زیرساخت تست خودکار، یک زیرساخت VTS برای تست خودکار VTS، CTS یا سایر تستها روی دستگاههای همکار است که تصویر سیستم عمومی AOSP (GSI) را اجرا میکنند.
اشکالزدایی
تلهمتری پیشرفته
در اندروید، تلهمتری فرآیندی است که به طور خودکار اطلاعات مربوط به استفاده و تشخیص عیب در مورد دستگاه، سیستم اندروید و برنامهها را جمعآوری میکند. در نسخههای قبلی اندروید، مجموعه تلهمتری محدود بود و اطلاعات مورد نیاز برای شناسایی و حل مشکلات مربوط به قابلیت اطمینان سیستم و دستگاه یا برنامه را در بر نمیگرفت. این امر شناسایی علل ریشهای مشکلات را دشوار، اگر نگوییم غیرممکن، میکرد.
اندروید ۹ شامل ویژگی تلهمتری statsd است که با جمعآوری سریعتر و بهتر دادهها، این نقص را برطرف میکند. statsd آمار استفاده از برنامهها، باتری و پردازشها و خرابیها را جمعآوری میکند. این دادهها تجزیه و تحلیل شده و برای بهبود محصولات، سختافزار و خدمات استفاده میشوند.
برای جزئیات بیشتر، به frameworks/base/cmds/statsd/ مراجعه کنید.
ویژگیهای امنیتی
امضای برنامه
طرح امضای APK نسخه ۳ از چرخش کلید APK پشتیبانی میکند.
پشتیبانی بیومتریک
اندروید ۹ شامل کلاس عمومی BiometricPrompt است که برنامهها میتوانند از آن برای ادغام پشتیبانی از احراز هویت بیومتریک به روشی مستقل از دستگاه و روش استفاده کنند. برای اطلاعات بیشتر در مورد ادغام پشته بیومتریک خود برای شامل کردن BiometricPrompt ، به Biometrics مراجعه کنید.
تحلیل دینامیکی
اندروید ۹ از ابزارهای بیشتری برای کاهش آسیبپذیری و تحلیل آنها پشتیبانی میکند.
یکپارچگی جریان کنترل (CFI)
یکپارچگی جریان کنترل (CFI) یک مکانیزم امنیتی است که از ایجاد تغییرات در نمودار جریان کنترل اصلی یک فایل باینری کامپایل شده جلوگیری میکند و انجام چنین حملاتی را به طور قابل توجهی دشوارتر میسازد.
هسته CFI
علاوه بر سیستم CFI که به طور پیشفرض فعال است، اندروید ۹ و بالاتر از آن شامل پشتیبانی از یکپارچگی جریان کنترل هسته (CFI) نیز میشود.
رمزگذاری
رمزگذاری مبتنی بر فایل
رمزگذاری مبتنی بر فایل (FBE) برای کار با حافظههای قابل تطبیق بهروزرسانی شده است. دستگاههای جدید باید به جای رمزگذاری کامل دیسک، از رمزگذاری مبتنی بر فایل استفاده کنند.
رمزگذاری فراداده
اندروید ۹ و بالاتر در صورت وجود پشتیبانی سختافزاری، از رمزگذاری فراداده پشتیبانی میکند. با رمزگذاری فراداده، یک کلید واحد که در زمان بوت وجود دارد، از رمزگذاری مبتنی بر فایل برای رمزگذاری هرگونه محتوای رمزگذاری نشده استفاده میکند.
فروشگاه کلید
اندروید ۹ و بالاتر شامل Keymaster 4 میشود که این ویژگیها را دارد.
استرانگ باکس
اندروید ۹ و بالاتر از کلیدهای Android Keystore پشتیبانی میکند که در یک CPU فیزیکی جداگانه که مخصوص برنامههای با امنیت بالا مانند یک عنصر امنیتی تعبیهشده (SE) ساخته شده است، ذخیره و استفاده میشوند. StrongBox Keymaster پیادهسازی Keymaster HAL در سختافزار امنیتی مجزا است. یک StrongBox دارای موارد زیر است:
- پردازنده گسسته
- ذخیرهسازی امن یکپارچه
- مولد اعداد تصادفی واقعی با کیفیت بالا
- بستهبندی مقاوم در برابر دستکاری
- مقاومت کانال جانبی
وارد کردن کلید امن
برای وارد کردن ایمن یک کلید به Keymaster 4، کلیدی که خارج از دستگاه ایجاد میشود، با مشخصات مجوزهایی که نحوه استفاده از کلید را تعریف میکنند، رمزگذاری میشود.
پشتیبانی از 3DES
Keymaster 4 شامل 3DES برای سازگاری با سیستمهای قدیمی است که از 3DES استفاده میکنند.
اتصال نسخه
برای پشتیبانی از ساختار ماژولار Treble و شکستن اتصال system.img به boot.img ، Keymaster 4 مدل اتصال نسخه کلید را تغییر داد تا برای هر پارتیشن سطوح پچ جداگانهای داشته باشد. این امر به هر پارتیشن اجازه میدهد تا بهطور مستقل بهروزرسانی شود و در عین حال محافظت در برابر بازگشت به عقب را نیز فراهم میکند.
API تأیید محافظتشده اندروید
دستگاههای پشتیبانیشدهای که با اندروید ۹ نصبشده راهاندازی میشوند، به توسعهدهندگان این امکان را میدهند که از API تأیید محافظتشده اندروید استفاده کنند. با استفاده از این API، برنامهها میتوانند از نمونهای از ConfirmationPrompt برای نمایش اعلانی به کاربر استفاده کنند و از او بخواهند که یک بیانیه کوتاه را تأیید کند. این بیانیه به برنامه اجازه میدهد تا مجدداً تأیید کند که کاربر میخواهد یک تراکنش حساس، مانند پرداخت، را تکمیل کند.
SELinux
جعبه شنی SELinux برای هر برنامه
این سندباکس برنامه دارای محافظتها و موارد آزمایشی جدیدی است تا اطمینان حاصل شود که همه برنامههای بدون امتیاز که اندروید ۹ و بالاتر را هدف قرار میدهند، سندباکسهای SELinux جداگانهای را اجرا میکنند.
تغییرات SELinux در Treble
بهروزرسانیهای Treble SELinux در اندروید ۹ و بالاتر در چندین صفحه در بخش SELinux مستند شدهاند.
آغازگر فروشنده
Vendor init با استفاده از یک دامنه SELinux جداگانه برای اجرای دستورات /vendor با مجوزهای خاص فروشنده، شکاف موجود در تقسیمبندی سیستم/فروشنده Treble را میبندد.
ویژگیهای سیستم
اندروید ۹ از به اشتراک گذاشته شدن غیرضروری ویژگیهای سیستم بین پارتیشنهای system و vendor جلوگیری میکند و روشی را برای اطمینان از سازگاری بین ویژگیهای سیستم مشترک ارائه میدهد.
تستهای ویژگی SELinux
اندروید ۹ شامل تستهای زمان ساخت جدیدی است که تضمین میکند تمام فایلها در مکانهای خاص، ویژگیهای مناسب را دارند. برای مثال، تمام فایلهای موجود در sysfs دارای ویژگی sysfs_type مورد نیاز هستند.
صوتی
جلوههای صوتی با وضوح بالا
بهروزرسانیهای مربوط به جلوههای صوتی با وضوح بالا شامل تبدیل پردازش جلوه از فرمت int16 به فرمت float و افزایش تعداد ترکهای خروجی همزمان کلاینت، حداکثر حافظه کلاینت/سرور و کل ترکهای میکس شده میشود.
دوربین
دوربینهای خارجی USB
اندروید ۹ و بالاتر از دوربینهای USB (یعنی وبکمها) که از رابط برنامهنویسی استاندارد Camera2 اندروید و رابط HIDL دوربین استفاده میکنند، پشتیبانی میکند.
ردیابی حرکت
دستگاههای دوربین میتوانند قابلیت ردیابی حرکت را تبلیغ کنند .
پشتیبانی از چند دوربین
پشتیبانی از چند دوربین شامل پشتیبانی API برای دستگاههای چند دوربینه از طریق یک دستگاه دوربین منطقی جدید متشکل از دو یا چند دستگاه دوربین فیزیکی است که در یک جهت قرار دارند.
پارامترهای جلسه
پیادهسازی پارامترهای جلسه میتواند با فعال کردن کلاینتهای دوربین برای پیکربندی فعال زیرمجموعهای از پارامترهای درخواست پرهزینه به عنوان بخشی از مرحله اولیهسازی جلسه ضبط، تأخیرها را کاهش دهد.
بافر تولیدکننده واحد، مصرفکننده چندگانه
انتقال بافر دوربین تک تولیدکننده، چند مصرفکننده مجموعهای از روشها است که به مشتریان دوربین اجازه میدهد سطوح خروجی را به صورت پویا اضافه و حذف کنند، در حالی که جلسه ضبط فعال است و جریان دوربین در حال انجام است.
اتصال
تماس و پیام رسانی
اجرای طرحهای داده
اندروید ۹ و بالاتر پشتیبانی بهتری را برای اپراتورهایی که طرحهای داده را با استفاده از APIهای SubscriptionPlan پیادهسازی میکنند، فراهم میکند.
برنامههای تماس شخص ثالث
اندروید ۹ و بالاتر رابطهای برنامهنویسی کاربردی (API) ارائه میدهد که به برنامههای تماس شخص ثالث (3P) اجازه میدهد تماسهای ورودی همزمان اپراتور را مدیریت کنند و تماسها را در گزارش تماس سیستم ثبت کنند.
حامل
شناسایی حامل
در اندروید ۹، AOSP یک پایگاه داده شناسه اپراتور اضافه میکند تا به شناسایی اپراتور کمک کند. این پایگاه داده با ارائه یک روش مشترک برای شناسایی اپراتورها، منطق تکراری و تجربیات پراکنده برنامه را به حداقل میرساند.
سیمکارت الکترونیکی
سیمکارت جاسازیشده (eSIM یا eUICC) جدیدترین فناوری است که به کاربران تلفن همراه اجازه میدهد بدون داشتن سیمکارت فیزیکی، پروفایل اپراتور را دانلود کرده و سرویس اپراتور را فعال کنند. در اندروید ۹ و بالاتر، چارچوب اندروید APIهای استانداردی را برای دسترسی به eSIM و مدیریت پروفایلهای اشتراک در eSIM ارائه میدهد. برای اطلاعات بیشتر، به لینک زیر مراجعه کنید:
پشتیبانی از چند سیمکارت برای تنظیمات IMS
اندروید ۹ و بالاتر بهبودهایی را در تنظیمات کاربر برای زیرسیستم چندرسانهای IP (IMS) ارائه میدهد. میتوانید به جای اشتراکگذاری این تنظیمات در همه اشتراکها، صدای خارج از شبکه LTE (VoLTE)، تماس ویدیویی و تماس Wi-Fi را به صورت جداگانه برای هر اشتراک تنظیم کنید.
پخشهای دولتی سیمکارت
در اندروید ۹ و بالاتر، Intent.ACTION_SIM_STATE_CHANGED منسوخ شده است و دو پخش جداگانه برای وضعیت کارت و وضعیت برنامه کارت اضافه شده است، TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED و TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED .
با این تغییرات، گیرندههایی که فقط نیاز به دانستن وجود کارت دارند، نیازی به گوش دادن به تغییرات وضعیت برنامه ندارند و گیرندههایی که فقط نیاز به دانستن آماده بودن برنامههای کارت دارند، نیازی به گوش دادن به تغییرات وضعیت کارت ندارند.
دو پخش جدید @SystemApis هستند و چسبنده نیستند. فقط گیرندههایی که مجوز READ_PRIVILEGED_PHONE_STATE دارند میتوانند پخشها را دریافت کنند.
این intentها هنگام باز کردن قفل دستگاه، دوباره پخش نمیشوند. گیرندههایی که به پخشهای ارسالی قبل از باز کردن قفل دستگاه شما وابسته هستند، یا باید directBootAware استفاده کنند، یا باید وضعیت را پس از باز کردن قفل کاربر بررسی کنند. وضعیتها را میتوان با استفاده از APIهای مربوطه در TelephonyManager، getSimCardState() و getSimApplicationState() بررسی کرد.
وایفای
وایفای اپراتور
ویژگی وایفای اپراتور به دستگاهها اجازه میدهد تا بهطور خودکار به شبکههای وایفای پیادهسازیشده توسط اپراتور متصل شوند. در مناطقی با تراکم بالا یا با پوشش سلولی حداقل مانند استادیوم یا ایستگاه قطار زیرزمینی، وایفای اپراتور به بهبود اتصال و کاهش ترافیک کمک میکند.
تصادفیسازی MAC
تصادفیسازی مک به دستگاهها اجازه میدهد هنگام جستجوی شبکههای جدید، در حالی که در حال حاضر به شبکهای متصل نیستند، از آدرسهای مک تصادفی استفاده کنند. در اندروید ۹ و بالاتر، میتوان گزینهای را برای توسعهدهندگان فعال کرد تا دستگاه هنگام اتصال به شبکه وایفای از یک آدرس مک تصادفی استفاده کند.
روشن کردن خودکار وایفای
وقتی ویژگی روشن کردن خودکار وایفای فعال باشد، هر زمان که دستگاه نزدیک یک شبکه وایفای ذخیرهشده با نشانگر قدرت سیگنال دریافتی نسبی (RSSI) به اندازه کافی بالا باشد، وایفای به طور خودکار دوباره فعال میشود.
زمان رفت و برگشت وای فای
زمان رفت و برگشت وایفای (RTT) به دستگاهها اجازه میدهد تا فاصله تا سایر دستگاههای پشتیبانیکننده، چه نقاط دسترسی (AP) باشند و چه دستگاههای همتای Wi-Fi Aware (در صورت پشتیبانی دستگاه از Wi-Fi Aware)، را اندازهگیری کنند. این ویژگی بر اساس پروتکل IEEE 802.11mc ساخته شده است و برنامهها را قادر میسازد تا از دقت و آگاهی مکانی پیشرفته استفاده کنند.
بهبود امتیازدهی وایفای
مدلهای بهبود یافته امتیازدهی وایفای به سرعت و با دقت تعیین میکنند که چه زمانی یک دستگاه باید از یک شبکه وایفای متصل خارج شود یا وارد یک شبکه وایفای جدید شود. این مدلها با جلوگیری از وقفه در اتصال، تجربهای قابل اعتماد و یکپارچه را برای کاربران فراهم میکنند.
مقادیر RSSI را در منابع config.xml ، به ویژه موارد زیر، بررسی و تنظیم کنید:
-
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz -
config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz -
config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz -
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
همزمانی STA/AP وایفای
همزمانی وایفای STA/AP به قابلیتی گفته میشود که به دستگاهها اجازه میدهد همزمان در حالتهای ایستگاه (STA) و نقطه دسترسی (AP) کار کنند. برای دستگاههایی که از وایفای دو بانده همزمان (DBS) پشتیبانی میکنند، این قابلیت، قابلیتهایی مانند عدم اختلال در وایفای STA را در زمانی که کاربر میخواهد یک هاتاسپات (SoftAP) را فعال کند، فراهم میکند.
بهبودهای WiFiStateMachine
WifiStateMachine کلاس اصلی مورد استفاده برای کنترل فعالیت Wi-Fi، هماهنگ کردن ورودی کاربر (حالتهای عملیاتی: هاتاسپات، اسکن، اتصال یا خاموش) و کنترل اقدامات شبکه Wi-Fi (مانند اسکن یا اتصال) است.
در اندروید ۹ و بالاتر، کد چارچوب وایفای و پیادهسازی WifiStateMachine دوباره معماری شدهاند که منجر به کاهش اندازه کد، منطق کنترل وایفای با قابلیت پیگیری آسانتر، بهبود جزئیات کنترل و افزایش پوشش و کیفیت تستهای واحد میشود.
در سطح بالا، WifiStateMachine به Wi-Fi اجازه میدهد تا در یکی از چهار حالت زیر قرار گیرد:
- حالت کلاینت (میتواند متصل شود و اسکن کند)
- حالت فقط اسکن
- حالت SoftAP (نقطه اتصال وایفای)
- غیرفعال (وایفای کاملاً خاموش)
هر حالت وایفای الزامات متفاوتی برای اجرای سرویسها دارد و باید به شیوهای سازگار تنظیم شود و فقط رویدادهای مربوط به عملکرد خود را مدیریت کند. پیادهسازی جدید، کد را به رویدادهای مربوط به آن حالت محدود میکند و زمان اشکالزدایی و خطر ایجاد اشکالات جدید به دلیل پیچیدگی را کاهش میدهد. علاوه بر مدیریت صریح عملکرد حالت، مدیریت نخها به شیوهای سازگار انجام میشود و استفاده از کانالهای ناهمزمان به عنوان مکانیسمی برای همگامسازی حذف میشود.
بهروزرسانیهای مجوز وایفای
در اندروید ۹ و بالاتر، مجوز برنامه CHANGE_WIFI_STATE به طور پیشفرض فعال است. میتوانید این مجوز را برای هر برنامهای در صفحه تنظیمات در مسیر Settings > Apps & notifications > Special app access > Wi-Fi control غیرفعال کنید.
برنامهها باید بتوانند مواردی را که مجوز CHANGE_WIFI_STATE اعطا نمیشود، مدیریت کنند.
برای اعتبارسنجی این رفتار، تستهای روبوالکتریک و دستی را اجرا کنید.
برای تست دستی:
- به تنظیمات > برنامهها و اعلانها > دسترسی ویژه به برنامهها > کنترل وایفای بروید.
- مجوز برنامه خود را انتخاب و غیرفعال کنید.
- تأیید کنید که برنامه شما میتواند سناریویی را که در آن مجوز
CHANGE_WIFI_STATEاعطا نمیشود، مدیریت کند.
منسوخ شدن WPS
به دلیل مشکلات امنیتی، قابلیت Wi-Fi protected setup (WPS) در WiFiManager در اندروید ۹ و بالاتر منسوخ و غیرفعال شده است. با این حال، WiFiDirect هنوز از WPS در WPA supplicant استفاده میکند.
گرافیک
پیادهسازی
رابط برنامهنویسی ولکان ۱.۱
اندروید ۹ و بالاتر از پیادهسازی رابط برنامهنویسی گرافیکی Vulkan 1.1 پشتیبانی میکند.
ابزار WinScope برای ردیابی انتقال پنجره
اندروید ۹ و بالاتر شامل ابزار WinScope برای ردیابی انتقال پنجرهها است. WinScope زیرساختها و ابزارهایی را برای ضبط و تجزیه و تحلیل وضعیت مدیر پنجره در حین و بعد از انتقال فراهم میکند. این ابزار امکان ضبط و بررسی انتقال پنجرهها را فراهم میکند، در حالی که تمام وضعیتهای مربوط به مدیر پنجره را در یک فایل ردیابی ثبت میکند. میتوانید از این دادهها برای پخش مجدد و بررسی انتقال استفاده کنید.
کد منبع ابزار WinScope در platform/development/tools/winscope قرار دارد.
تعامل
سیستم صوتی خودرو
«صدای خودرو» معماری صوتی را برای پیادهسازیهای اندروید مرتبط با خودرو توصیف میکند.
HAL شبکههای عصبی (NN) انتزاعی از شتابدهندههای مختلف را تعریف میکند. درایورهای این شتابدهندهها باید با این HAL مطابقت داشته باشند.
خودرو HAL
ویژگیهای خودرو، تغییرات رابط HAL خودرو را توصیف میکند.
انتخاب ماهواره GNSS
هنگام کار با HAL های جدید سیستم ماهوارهای ناوبری جهانی (GNSS) (نسخه ۱.۱+)، چارچوب اندروید تنظیمات اندروید را رصد میکند. شرکا میتوانند تنظیمات را از سرویسهای Google Play یا سایر بهروزرسانیهای سیستم تغییر دهند. این تنظیمات به GNSS HAL میگوید که آیا نباید از ماهوارههای GNSS خاصی استفاده شود یا خیر. این میتواند در صورت بروز خطاهای مداوم ماهواره یا صورت فلکی GNSS یا برای واکنش سریعتر به مشکلات پیادهسازی GNSS HAL که ممکن است هنگام ترکیب صورتهای فلکی با استفاده از سیستمهای زمانی مختلف و رویدادهای خارجی، مانند تغییر ثانیه کبیسه، روز یا هفته، رخ دهد، مفید باشد.
مدل سختافزاری GNSS
در اندروید ۹، GNSS HAL نسخه ۱.۱ یا بالاتر میتواند اطلاعات مربوط به API سختافزار را به پلتفرم منتقل کند. پلتفرم باید رابط IGnssCallback را پیادهسازی کند و یک هندل به HAL ارسال کند. GNSS HAL اطلاعات مدل سختافزار را از طریق متد LocationManager#getGnssHardwareModelName() ارسال میکند. تولیدکنندگان دستگاه باید با ارائهدهندگان GNSS HAL خود همکاری کنند تا در صورت امکان این اطلاعات را ارائه دهند.
مجوزها
پیکربندی بهروزرسانیهای کنترل دسترسی اختیاری
پیکربندی کنترل دسترسی اختیاری (DAC) شامل بهروزرسانیهایی در مکانیزم شناسههای اندروید (AIDs) برای گسترش قابلیتهای سیستم فایل است.
قرار دادن مجوزهای برنامههای دارای امتیاز ویژه در لیست سفید
در اندروید ۹ و بالاتر، اگر مجوزهایی وجود دارد که باید رد شوند، XML را ویرایش کنید تا از برچسب deny-permission به جای برچسب permission که در نسخههای قبلی استفاده میشد، استفاده شود.
دادهها
بهبود تخمین پهنای باند
اندروید ۹ پشتیبانی بهتری از تخمین پهنای باند ارائه میدهد. برنامههای اندروید در صورت دسترسی به پهنای باند داده موجود، میتوانند تنظیمات وضوح مناسبتری را برای تماسهای ویدیویی و پخش ویدیو اعمال کنند.
در دستگاههایی که اندروید ۶.۰ یا بالاتر دارند، تماسگیرندهای که میخواهد پهنای باند تخمینی برای شبکه تلفن همراه داشته باشد، تابع ConnectivityManager.requestBandwidthUpdate() را فراخوانی میکند و این چارچوب ممکن است پهنای باند دانلود تخمینی را ارائه دهد.
اما در دستگاههایی که از نسخه ۹ یا بالاتر استفاده میکنند، تابع فراخوانی onCapabilitiesChanged() به طور خودکار زمانی که تغییر قابل توجهی در پهنای باند تخمینی رخ دهد، فعال میشود و فراخوانی requestBandwidthUpdate() بیاثر است؛ توابع getLinkDownstreamBandwidthKbps() و getLinkUpstreamBandwidthKbps() مرتبط با آن با اطلاعات بهروزرسانیشده ارائه شده توسط لایه فیزیکی پر میشوند.
علاوه بر این، دستگاهها میتوانند پهنای باند سلول LTE را از طریق ServiceState.getCellBandwidths() بررسی کنند. این به برنامهها اجازه میدهد تا میزان پهنای باند (فرکانس) موجود در یک سلول مشخص را تعیین کنند. اطلاعات پهنای باند سلول از طریق یک منوی مخفی در دسترس است تا آزمایشکنندگان میدانی بتوانند جدیدترین اطلاعات را بررسی کنند.
نظارت بر ترافیک eBPF
ابزار ترافیک شبکه eBPF از ترکیبی از پیادهسازی هسته و فضای کاربری برای نظارت بر استفاده از شبکه در یک دستگاه از آخرین بوت دستگاه استفاده میکند. این ابزار قابلیتهای اضافی مانند برچسبگذاری سوکت، جداسازی ترافیک پیشزمینه/پسزمینه و فایروال هر UID را برای مسدود کردن دسترسی برنامهها به شبکه بسته به وضعیت دستگاه فراهم میکند.
بازیابی به API های پایینتر
اکنون دستگاهها میتوانند از نسخههای بعدی سیستم عامل بازیابی شوند. این امر به ویژه زمانی مفید است که کاربران تلفنهای خود را ارتقا داده اما سپس آنها را گم کرده یا خراب کردهاند.
اگر یک تولیدکننده اصلی (OEM) عوامل پشتیبانگیری را برای هر یک از بستههای سیستم (اندروید، سیستم، تنظیمات) تغییر دهد، آن عوامل باید بازیابی مجموعههای پشتیبانگیری که در نسخههای بالاتر پلتفرم ایجاد شدهاند را بدون خرابی و با بازیابی حداقل برخی از دادهها، مدیریت کنند.
استفاده از یک اعتبارسنج را برای بررسی مقادیر نامعتبر یک قطعه داده پشتیبان مشخص و بازیابی فقط دادههای معتبر، مانند core/java/android/provider/SettingsValidators.java در نظر بگیرید.
این ویژگی به طور پیشفرض فعال است. پشتیبانی SettingsBackupAgent برای بازیابی از نسخههای آینده را میتوان از طریق Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION غیرفعال کرد. هیچ پیادهسازی اضافی لازم نیست مگر اینکه سازنده دستگاه یکی از عوامل پشتیبانگیری موجود در ROM را گسترش دهد (یا یک عامل سفارشی اضافه کند).
این ویژگی امکان بازیابی سیستم از نسخههای بعدی پلتفرم را فراهم میکند؛ با این حال، منطقی است که انتظار داشته باشیم دادههای بازیابی شده کامل نباشند. دستورالعملهای زیر برای عوامل پشتیبانگیری زیر اعمال میشود:
PackageManagerBackupAgent از نسخههای آیندهی دادههای پشتیبان از طریق نسخهبندی قالب پشتیبانی میکند؛ افزونههای اینجا باید با کد بازیابی فعلی سازگار باشند یا از دستورالعملهای کلاس، که شامل تنظیم ثابتهای مناسب است، پیروی کنند.
SystemBackupAgent در اندروید ۹ و بالاتر
restoreAnyVersion = falseرا تعیین میکند. این برنامه از بازیابی از نسخههای بالاتر API پشتیبانی نمیکند.SettingsBackupAgent در اندروید ۹ و بالاتر
restoreAnyVersion = trueرا مشخص میکند. پشتیبانی جزئی از طریق اعتبارسنجها وجود دارد. اگر اعتبارسنج برای یک تنظیم در سیستم عامل هدف وجود داشته باشد، میتوان آن را از نسخه API بالاتر بازیابی کرد. افزودن هر تنظیمی باید با اعتبارسنج آن همراه باشد. برای جزئیات بیشتر، کلاس را بررسی کنید.هر عامل پشتیبان سفارشی که در ROM قرار دارد، باید هر زمان که تغییر ناسازگاری در قالب دادههای پشتیبان ایجاد میشود، کد نسخه خود را افزایش دهد و اگر عامل آنها آماده کار با دادههای پشتیبان از نسخه بعدی کد خود نیست، اطمینان حاصل کند که
restoreAnyVersion = false(پیشفرض) است.
تصدی
بهبودهای مدیریتشدهی پروفایل
تغییرات UX برای پروفایلهای مدیریتشده ، شناسایی، دسترسی و کنترل پروفایل مدیریتشده را برای کاربران آسانتر میکند.
مکث OTA ها
یک SystemApi جدید به نام @SystemApi به صاحبان دستگاهها اجازه میدهد تا بهروزرسانیهای OTA، از جمله بهروزرسانیهای امنیتی را به طور نامحدود متوقف کنند .
عملکرد
سلامت ۲.۰
اندروید ۹ و بالاتر شامل android.hardware.health HAL 2.0، یک نسخه ارتقا یافته اصلی از health@1.0 HAL، میشود. برای اطلاعات بیشتر به این صفحات مراجعه کنید:
راهکار ذخیرهسازی APK
اندروید ۹ و بالاتر شامل یک راهکار ذخیرهسازی APK برای نصب سریع برنامههای از پیش بارگذاری شده روی دستگاهی است که از پارتیشنهای A/B پشتیبانی میکند. تولیدکنندگان اصلی تجهیزات (OEM) میتوانند پیشبارگذاریها و برنامههای محبوب را در حافظه پنهان APK که عمدتاً در پارتیشن B خالی در دستگاههای جدید با پارتیشن A/B ذخیره میشوند، بدون تأثیر بر فضای داده کاربر، قرار دهند.
بهینهسازی هدایتشده توسط پروفایل
اندروید ۹ و بالاتر از بهینهسازی هدایتشده توسط پروفایل (PGO) شرکت Clang روی ماژولهای بومی اندروید که دارای قوانین ساخت طرح اولیه هستند، پشتیبانی میکند.
ثبت وقایع پیش از نوشتن
یک حالت خاص از SQLiteDatabase به نام compatibility write-ahead logging (WAL) به یک پایگاه داده اجازه میدهد تا journal_mode=WAL استفاده کند و در عین حال حداکثر یک اتصال برای هر پایگاه داده حفظ کند.
زمانهای بوت
اندروید ۹ بهینهسازی زمان بوت را همانطور که در بخش «بهینهسازی زمان بوت» توضیح داده شده است، تغییر میدهد.
قدرت
محدودیتهای پسزمینه
اندروید ۹ و بالاتر شامل محدودیتهایی در پسزمینه است که به کاربران امکان میدهد برنامههایی را که ممکن است باتری را تخلیه کنند، محدود کنند. همچنین ممکن است سیستم غیرفعال کردن برنامههایی را که بر سلامت دستگاه تأثیر منفی میگذارند، پیشنهاد دهد.
دستگاههای بدون باتری
اندروید ۹ دستگاههای بدون باتری را با ظرافت بیشتری نسبت به نسخههای قبلی مدیریت میکند. اندروید ۹ کد مربوط به دستگاههای بدون باتری را که به طور پیشفرض فرض میکردند باتری وجود دارد، ۱۰۰٪ شارژ شده و در سلامت کامل است و دمای آن روی ترمیستور معمولی است، حذف میکند.