اخبار محصول

اولین نسخه بتای Android 17

زمان خواندن: ۷ دقیقه
مشاهده نمایه Matthew McCullough
Matthew McCullough معاون رئیس، مدیریت محصول، توسعه‌دهنده نرم‌افزار Android

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

فراتر از «پیش‌نمای توسعه‌دهندگان نرم‌افزار»

Android «پیش‌نمایش توسعه‌دهندگان» سنتی را با کانال Canary مداوم جایگزین کرده است. این مدل جدید «همیشه روشن» سه مزیت اصلی دارد:

  • دسترسی سریع‌تر: ویژگی‌ها و میاناهای برنامه‌سازی کاربردی به‌محض اینکه آزمایش داخلی را پشت سر می‌گذارند، به‌جای اینکه منتظر انتشار فصلی بمانند، در Canary قرار می‌گیرند.
  • پایداری بهتر: «آزمایش نبرد» اولیه در Canary منجر به تجربه نسخه بتای صیقل‌یافته‌تر با میاناهای برنامه‌سازی کاربردی جدید و تغییرات رفتاری می‌شود که به نسخه نهایی نزدیک‌تر است.
  • آزمایش آسان‌تر: Canary از به‌روزرسانی‌های OTA پشتیبانی می‌کند (دیگر نیازی به فلش کردن دستی نیست) و به‌عنوان یک کانال به‌روزرسانی جداگانه، راحت‌تر با گردش‌های کاری CI ادغام می‌شود و اولین فرصت را برای ارائه بازخورد فوری درباره تغییرات احتمالی آینده به شما می‌دهد.

برنامه زمانی Android 17

ما به‌سرعت از این نسخه بتا به نقطه عطف «پایداری پلاتفرم» خود که برای ماه مارس هدف‌گذاری شده است حرکت خواهیم کرد. در این نقطه عطف، میاناهای برنامه‌سازی کاربردی نهایی SDK/NDK و رفتارهای نهایی برنامه را ارائه خواهیم داد. از آن زمان، چند ماه قبل‌از انتشار نهایی فرصت خواهید داشت تا آزمایش را تکمیل کنید.

timeline1.png

یک سال انتشار

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

timeline2.png

محدودیت‌های جهت و تغییر اندازه

با انتشار نسخه بتای Android 17، به مرحله بعدی نقشه راه تطبیقی خود می‌رویم: Android 17 (سطح ای‌پی‌آی ۳۷) گزینه انصراف توسعه‌دهنده را برای محدودیت‌های جهت و قابلیت تغییر اندازه در دستگاه‌های با صفحه‌نمایش بزرگ (sw > 600 dp) حذف می‌کند.

وقتی برنامه شما SDK 37 را هدف قرار می‌دهد، باید برای سازگاری آماده باشد. کاربران انتظار دارند برنامه‌هایشان در همه‌جا کار کند—چه درحال چندوظیفگی در رایانه لوحی باشند، چه دستگاهی را باز کنند، یا از محیط پنجره‌بندی رایانه‌ای استفاده کنند—و انتظار دارند واسط کاربر فضا را پر کند و به وضعیت دستگاهشان احترام بگذارد.

تغییرات کلیدی برای کیت توسعه نرم‌افزار ۳۷

برنامه‌هایی که Android 17 را هدف‌یابی می‌کنند باید از سازگاری با حذف تدریجی مشخصه‌های مانیفست و میاناهای برنامه‌سازی کاربردی زمان اجرا که در Android 16 معرفی شده‌اند اطمینان حاصل کنند. هنگام اجرا در صفحه‌نمایش بزرگ (ابعاد کوچک‌تر ≥ ۶۰۰ پیکسل مستقل از تراکم)، ویژگی‌ها و میاناهای برنامه‌سازی کاربردی زیر نادیده گرفته خواهند شد:

ویژگی‌های مانیفست/میانای برنامه‌سازی کاربردیمقادیر نادیده‌گرفته‌شده
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivityهمه
minAspectRatioهمه
maxAspectRatioهمه

معافیت‌ها و کنترل کاربر

این تغییرات مختص صفحه‌نمایش‌های بزرگ است؛ این تغییرات برای صفحه‌نمایش‌های کوچک‌تر از sw600dp (ازجمله تلفن‌های سنتی با فرم فاکتور تخت) اعمال نمی‌شود. به‌علاوه، برنامه‌هایی که به‌عنوان بازی دسته‌بندی شده‌اند (براساس پرچم android:appCategory) از این محدودیت‌ها معاف هستند.

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

به‌روزرسانی‌های تغییرات پیکربندی

برای بهبود سازگاری برنامه و کمک به به‌حداقل رساندن بازپخش ویدیو قطع‌شده، ورودی حذف‌شده، و انواع دیگر ازدست رفتن حالت مختل‌کننده، رفتار پیش‌فرض را برای بازآفرینی «فعالیت» به‌روز می‌کنیم. از Android 17، سیستم دیگر به‌طور پیش‌فرض فعالیت‌ها را برای تغییرات پیکربندی خاصی که معمولاً نیازی به بازسازی واسط کاربر ندارند، ازجمله CONFIG_KEYBOARD، CONFIG_KEYBOARD_HIDDEN، CONFIG_NAVIGATION، CONFIG_UI_MODE (وقتی فقط UI_MODE_TYPE_DESK تغییر می‌کند)، CONFIG_TOUCHSCREEN، و CONFIG_COLOR_MODE بازراه‌اندازی نخواهد کرد. درعوض، فعالیت‌های درحال اجرا این به‌روزرسانی‌ها را به‌سادگی ازطریق onConfigurationChanged دریافت خواهند کرد. اگر برنامه شما برای بار کردن مجدد منابع برای این تغییرات به بازراه‌اندازی کامل متکی است، اکنون باید بااستفاده از مشخصه مانیفست جدید android:recreateOnConfigChanges صریحاً موافقت کنید، که به شما امکان می‌دهد مشخص کنید کدام تغییرات پیکربندی باید چرخه حیات فعالیت کامل را (از توقف، تا نابودی و ایجاد مجدد) به‌همراه ثابت‌های مرتبط mcc، mnc، و موارد جدید keyboard، keyboardHidden، navigation، touchscreen و colorMode راه‌اندازی کند.

آماده کردن برنامه

ما ابزارها و اسنادی را منتشر کرده‌ایم تا این کار را برای شما آسان کنیم. پست وبلاگ متمرکز ما راهنمایی‌های بیشتری دارد، با راهبردهایی برای رسیدگی به مشکلات رایج. برنامه‌ها باید از چیدمان‌های افقی و عمودی برای اندازه‌های پنجره در کل محدوده نسبت‌های ابعادی پشتیبانی کنند، زیرا محدود کردن جهت یا نسبت ابعادی دیگر گزینه‌ای نخواهد بود. توصیه می‌کنیم برنامه‌تان را بااستفاده از نسخه بتا ۱ Android 17 با شبیه‌سازهای Pixel Tablet یا Pixel Fold (پیکربندی‌شده برای targetSdkPreview = "CinnamonBun") یا بااستفاده از چارچوب سازگاری برنامه برای فعال کردن UNIVERSAL_RESIZABLE_BY_DEFAULT در دستگاه‌های Android 16 آزمایش کنید.

عملکرد

Lock-free MessageQueue

در Android 17، برنامه‌هایی که کیت توسعه نرم‌افزار ۳۷ یا بالاتر را هدف قرار می‌دهند، پیاده‌سازی جدیدی از android.os.MessageQueue دریافت خواهند کرد که در آن پیاده‌سازی بدون قفل است. پیاده‌سازی جدید عملکرد را بهبود می‌بخشد و فریم‌های ازدست‌رفته را کاهش می‌دهد، اما ممکن است کارخواه‌هایی را که در فیلدها و روش‌های خصوصی MessageQueue منعکس می‌شوند خراب کند.

زباله‌روبی نسلی

Android 17 زباله‌روبی نسلی را به زباله‌روب Concurrent Mark-Compact در ART معرفی می‌کند. این بهینه‌سازی مجموعه‌های نسل جوان را که مکررتر هستند و منابع کمتری مصرف می‌کنند در کنار مجموعه‌های پشته کامل معرفی می‌کند. هدف آن کاهش هزینه کلی CPU و مدت زمان جمع‌آوری زباله است. بهبودهای ART همچنین برای بیش‌از یک میلیارد دستگاه دارای Android 12 (سطح میانای برنامه کاربردی ۳۱) و بالاتر ازطریق به‌روزرسانی‌های «سیستم Google Play» دردسترس است.

فیلدهای نهایی ایستا اکنون واقعاً نهایی هستند

از Android 17، برنامه‌هایی که Android 17 یا نسخه‌های جدیدتر را هدف‌یابی می‌کنند نمی‌توانند فیلدهای «static final» را اصلاح کنند، که به زمان اجرا اجازه می‌دهد بهینه‌سازی‌های عملکرد را به‌طور تهاجمی‌تری اعمال کند. تلاش برای انجام این کار ازطریق بازتاب (و بازتاب عمیق) همیشه منجر به ایجاد IllegalAccessException می‌شود. اصلاح آن‌ها ازطریق خانواده روش‌های SetStatic<Type>Field در JNI فوراً باعث ازکار افتادن برنامه می‌شود.

محدودیت‌های نمای اعلان سفارشی

برای کاهش استفاده از حافظه، اندازه نماهای اعلان سفارشی را محدود می‌کنیم. این به‌روزرسانی راه گریزی را می‌بندد که به برنامه‌ها اجازه می‌دهد بااستفاده از URI محدودیت‌های موجود را دور بزنند. این رفتار توسط نسخه کیت توسعه نرم‌افزار هدف کنترل می‌شود و برای برنامه‌هایی که میانای برنامه‌سازی کاربردی ۳۷ و بالاتر را هدف قرار می‌دهند اعمال می‌شود.

راه‌اندازهای ProfilingManager جدید برای اشکال‌زدایی عملکرد

چند راه‌انداز سیستم جدید به ProfilingManager اضافه کرده‌ایم تا به شما کمک کنیم داده‌های عمیق‌تری برای اشکال‌زدایی مشکلات عملکرد جمع‌آوری کنید. این راه‌اندازها عبارت‌اند از TRIGGER_TYPE_COLD_START، TRIGGER_TYPE_OOM، و TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

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

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

‫Android 17 ابزارهای سطح حرفه‌ای را با ویژگی‌هایی مثل انتقال‌های یکپارچه و بلندی صدای استاندارد به برنامه‌های رسانه و دوربین می‌آورد.

به‌روزرسانی‌های جلسه دوربین پویا

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

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

فراداده دستگاه چنددوربینه منطقی

هنگام کار با دوربین‌های منطقی که چندین حسگر دوربین فیزیکی را ترکیب می‌کنند، اکنون می‌توانید فراداده‌های اضافی را از همه دوربین‌های فیزیکی فعال درگیر در عکس‌برداری درخواست کنید، نه فقط دوربین اصلی. قبلاً برای دریافت فراداده از دوربین‌های فعال ثانویه (مثلاً درطول تعویض لنز برای بزرگ‌نمایی که دوربین دنبال‌کننده فعال است)، باید راه‌حل‌های جایگزین را پیاده‌سازی می‌کردید و گاهی‌اوقات جریان‌های فیزیکی غیرضروری را اختصاص می‌دادید. این ویژگی کلید جدیدی به‌نام LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS را در CaptureRequest و CaptureResult معرفی می‌کند. با تنظیم این کلید روی «روشن» در CaptureRequest، TotalCaptureResult شامل فراداده‌های این دوربین‌های فیزیکی فعال اضافی خواهد بود. بااستفاده از TotalCaptureResult.getPhysicalCameraTotalResults() می‌توانید به این فراداده جامع دسترسی پیدا کنید تا اطلاعات دقیق‌تری دریافت کنید که ممکن است به شما امکان دهد استفاده از منابع را در برنامه‌های دوربینتان بهینه‌سازی کنید.

پشتیبانی از Versatile Video Coding (VVC)

Android 17 پشتیبانی از استاندارد کدگذاری ویدیو همه‌کاره (VVC) را اضافه می‌کند. این شامل تعریف نوع MIME video/vvc در MediaFormat، افزودن نمایه‌های VVC جدید در MediaCodecInfo، و ادغام پشتیبانی در MediaExtractor می‌شود. این ویژگی برای دستگاه‌هایی که از رمزگشایی سخت‌افزاری پشتیبانی می‌کنند و درایورهای توانمند دارند ارائه خواهد شد.

کیفیت ثابت برای ضبط ویدیو

setVideoEncodingQuality() را به MediaRecorder اضافه کرده‌ایم. این ویژگی به شما امکان می‌دهد حالت کیفیت ثابت (CQ) را برای کدبندهای ویدیو پیکربندی کنید و کنترل دقیق‌تری بر کیفیت ویدیو فراتر از تنظیمات ساده نرخ بیت داشته باشید.

سخت‌سازی صدای پس‌زمینه

از Android 17، چارچوب صوتی محدودیت‌هایی را بر تعاملات صوتی پس‌زمینه، ازجمله بازپخش صدا، درخواست‌های تمرکز صوتی، و میاناهای برنامه‌سازی کاربردی تغییر میزان صدا اعمال خواهد کرد تا اطمینان حاصل شود که این تغییرات به‌طور عمدی توسط کاربر شروع شده‌اند. 

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

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

منسوخ شدن مشخصه ترافیک نوشتار ساده

مشخصه android:usesCleartextTraffic اکنون منسوخ شده است. اگر برنامه شما Android 17 یا بالاتر را هدف قرار می‌دهد و بدون پیکربندی امنیتی شبکه مربوطه به usesCleartextTraffic="true" متکی است، به‌طور پیش‌فرض ترافیک متن ساده را غیرمجاز می‌کند. توصیه می‌شود برای کنترل دقیق‌تر به فایل‌های پیکربندی امنیت شبکه منتقل شوید.

رمزنگاری ترکیبی HPKE

ما درحال معرفی یک میانای ارائه‌دهنده خدمات (SPI) عمومی برای پیاده‌سازی رمزنگاری ترکیبی HPKE هستیم که ارتباط امن را بااستفاده از ترکیبی از کلید عمومی و رمزگذاری متقارن (AEAD) امکان‌پذیر می‌کند.

اتصال‌پذیری و مخابرات

سابقه تماس VoIP بهبودیافته

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

محدوده Wi-Fi و مجاورت

فاصله‌یابی Wi-Fi با قابلیت‌های جدید «تشخیص مجاورت» بهبود یافته است و از فاصله‌یابی مداوم و اکتشاف همتابه‌همتای ایمن پشتیبانی می‌کند. به‌روزرسانی‌های محدوده Wi-Fi Aware شامل میاناهای برنامه‌سازی کاربردی جدید برای دسته‌های همتا و ذخیره‌سازی PMKID برای محدوده امن 11az است.

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

به‌روزرسانی‌های برنامه‌های دستگاه همپا

دو نمایه جدید به CompanionDeviceManager اضافه کرده‌ایم تا تشخیص دستگاه و مدیریت اجازه‌ها را بهبود ببخشیم:

  • دستگاه‌های پزشکی: این نمایه به برنامه‌های تلفن همراه دستگاه‌های پزشکی اجازه می‌دهد تا همه اجازه‌های لازم را با یک تک‌ضرب درخواست کنند و فرایند راه‌اندازی را ساده‌تر می‌کند.
  • ردیاب‌های تناسب اندام: نمایه DEVICE_PROFILE_FITNESS_TRACKER به برنامه‌های همراه اجازه می‌دهد صریحاً نشان دهند که درحال مدیریت ردیاب تناسب اندام هستند. این کار تجربه کاربری دقیقی را با نمادهای متمایز تضمین می‌کند و درعین‌حال از اجازه‌های نقش ساعت موجود مجدداً استفاده می‌کند.

همچنین، CompanionDeviceManager اکنون کادر گفتگوی یکپارچه‌ای برای مرتبط کردن دستگاه و درخواست‌های اجازه «دستگاه‌های اطراف» ارائه می‌دهد. می‌توانید از روش جدید setExtraPermissions در AssociationRequest.Builder استفاده کنید تا پیام‌واره‌های اجازه اطراف را در جریان ارتباط موجود دسته‌بندی کنید و تعداد کادرهای گفتگوی ارائه‌شده به کاربر را کاهش دهید.

شروع به کار با Android 17

می‌توانید هر دستگاه Pixel پشتیبانی‌شده‌ای را ثبت‌نام کنید تا این به‌روزرسانی و به‌روزرسانی‌های آتی نسخه بتای Android را به‌صورت بی‌سیم دریافت کنید. اگر دستگاه Pixel ندارید، می‌توانید از تصاویر سیستم ۶۴ بیتی با «شبیه‌ساز Android» در Android Studio استفاده کنید.

اگر درحال‌حاضر در برنامه Android Beta هستید، به‌روزرسانی بی‌سیم به Beta 1 به شما پیشنهاد خواهد شد.

اگر نسخه بتای Android 26Q1 را دارید و می‌خواهید نسخه پایدار نهایی 26Q1 را دریافت کنید و از نسخه بتا خارج شوید، باید به‌روزرسانی بی‌سیم به نسخه بتای 1‏ 26Q2 را نادیده بگیرید و منتظر انتشار 26Q1 بمانید.

منتظر بازخورد شما هستیم، بنابراین لطفاً مشکلات را گزارش کنید و درخواست‌های ویژگی را در صفحه بازخورد ارسال کنید. هرچه زودتر بازخوردتان را دریافت کنیم، بیشتر می‌توانیم آن را در کارمان روی نسخه نهایی لحاظ کنیم.

برای داشتن بهترین تجربه توسعه با Android 17، توصیه می‌کنیم از جدیدترین پیش‌نمایش Android Studio (Panda) استفاده کنید. پس‌از راه‌اندازی، در اینجا چند کار آورده شده است که باید انجام دهید:

  • با کیت توسعه نرم‌افزار جدید کامپایل کنید، در محیط‌های CI آزمایش کنید، و هرگونه مشکل را در ردیاب ما در صفحه بازخورد گزارش کنید.
  • برنامه فعلی‌تان را ازنظر سازگاری آزمایش کنید، ببینید آیا برنامه‌تان تحت‌تأثیر تغییرات Android 17 قرار می‌گیرد یا نه، و برنامه‌تان را در دستگاه یا شبیه‌سازی که Android 17 را اجرا می‌کند نصب کنید و آن را به‌طور گسترده آزمایش کنید.

تصاویر سیستم پیش‌نمایش/بتا و کیت توسعه نرم‌افزار را به‌طور منظم درطول چرخه انتشار Android 17 به‌روزرسانی خواهیم کرد. پس‌از نصب ساخت بتا، به‌طور خودکار به‌روزرسانی‌های آتی را به‌صورت بی‌سیم برای همه پیش‌نمایش‌ها و نسخه‌های بتای بعدی دریافت خواهید کرد.

برای اطلاعات کامل، به سایت توسعه‌دهنده Android 17 مراجعه کنید.

پیوستن به مکالمه

درحالی‌که به‌سمت پایداری پلاتفرم و انتشار نسخه پایدار نهایی Android 17 در اواخر امسال پیش می‌رویم، بازخورد شما همچنان ارزشمندترین دارایی ما است. چه پذیرنده آغازین در کانال Canary باشید یا توسعه‌دهنده نرم‌افزار که درحال آزمایش نسخه بتا ۱ است، به انجمن‌های ما بپیوندید و بازخوردتان را ارسال کنید. به علاقه موسیقیایی شما توجه می‌کنیم.

نویسنده:
ادامه خواندن