امروز ما اولین نسخه بتای اندروید ۱۷ را منتشر میکنیم و به کار خود برای ساخت پلتفرمی که اولویت را به حریم خصوصی، امنیت و عملکرد بهبود یافته میدهد، ادامه میدهیم. این نسخه، کار ما را برای برنامههای اندروید سازگارتر ادامه میدهد، پیشرفتهای قابل توجهی را در قابلیتهای دوربین و رسانه، ابزارهای جدید برای بهینهسازی اتصال و پروفایلهای گسترشیافته برای دستگاههای همراه معرفی میکند. این نسخه همچنین نشاندهنده یک تغییر اساسی در نحوه ارائه نسخههای جدید به جامعه توسعهدهندگان، از مدل سنتی پیشنمایش توسعهدهندگان به برنامه اندروید قناری است.
فراتر از پیشنمایش توسعهدهندگان
اندروید، «پیشنمایش توسعهدهندگان» سنتی را با یک کانال Canary پیوسته جایگزین کرده است. این مدل جدید «همیشه روشن» سه مزیت اصلی ارائه میدهد:
- دسترسی سریعتر: ویژگیها و APIها به محض اینکه آزمایشهای داخلی را پشت سر بگذارند، به جای انتظار برای انتشار فصلی، در Canary قرار میگیرند.
- پایداری بهتر: «آزمایش نبرد» زودهنگام در Canary منجر به یک تجربه بتای روانتر با APIهای جدید و تغییرات رفتاری میشود که به نسخه نهایی نزدیکتر هستند.
- تست آسانتر: Canary از بهروزرسانیهای OTA (دیگر خبری از فلش دستی نیست) پشتیبانی میکند و به عنوان یک کانال بهروزرسانی جداگانه، راحتتر با گردشهای کاری CI ادغام میشود و در اولین فرصت، بازخورد فوری در مورد تغییرات احتمالی آینده را به شما ارائه میدهد.
برنامه اندروید ۱۷
ما قصد داریم به سرعت از این نسخه بتا به نقطه عطف پایداری پلتفرم خود که برای ماه مارس در نظر گرفته شده است، حرکت کنیم. در این نقطه عطف، API های نهایی SDK/NDK و تا حد زیادی رفتارهای نهایی مواجهه با برنامه را ارائه خواهیم داد. از آن زمان، چند ماه تا انتشار نهایی فرصت خواهید داشت تا آزمایشهای خود را تکمیل کنید.

سالی پر از انتشار
ما قصد داریم اندروید ۱۷ را در قالب مجموعهای از نسخههای فصلی بهروزرسانی کنیم. نسخه پیش رو در سهماهه دوم، تنها نسخهای است که در آن تغییرات رفتاری از پیش برنامهریزیشده برای شکستن برنامه را معرفی میکنیم. ما قصد داریم در سهماهه چهارم، یک نسخه جزئی SDK با APIها و ویژگیهای اضافی داشته باشیم.

محدودیتهای جهتگیری و تغییر اندازه
با انتشار نسخه بتای اندروید ۱۷، ما به مرحله بعدی نقشه راه تطبیقی خود میرویم: اندروید ۱۷ (سطح API ۳۷) محدودیتهای مربوط به جهتگیری و تغییر اندازه صفحه نمایش در دستگاههای با صفحه نمایش بزرگ (sw > 600 dp) را که توسعهدهندگان نمیتوانستند اعمال کنند، حذف میکند .
وقتی برنامه شما SDK 37 را هدف قرار میدهد، باید آماده سازگاری باشد. کاربران انتظار دارند برنامههایشان در همه جا کار کنند - چه در حالت چندوظیفگی روی تبلت، چه در حالت باز کردن دستگاه یا استفاده از محیط پنجرهای دسکتاپ - و انتظار دارند رابط کاربری فضای خالی را پر کند و به وضعیت دستگاه آنها احترام بگذارد.
تغییرات کلیدی برای SDK 37
برنامههایی که اندروید ۱۷ را هدف قرار میدهند، باید از سازگاری با حذف تدریجی ویژگیهای مانیفست و APIهای زمان اجرا که در اندروید ۱۶ معرفی شدهاند، اطمینان حاصل کنند. هنگام اجرا روی صفحه نمایش بزرگ (ابعاد کوچکتر ≥ ۶۰۰dp)، ویژگیها و APIهای زیر نادیده گرفته میشوند:
| ویژگیهای مانیفست/API | مقادیر نادیده گرفته شده |
| جهت صفحه نمایش | پرتره، معکوسپرتره، حسگرپرتره، کاربرپرتره، منظره، معکوسمنظره، حسگرمنظره، کاربرمنظره |
| تابع setRequestedOrientation() | پرتره، معکوسپرتره، حسگرپرتره، کاربرپرتره، منظره، معکوسمنظره، حسگرمنظره، کاربرمنظره |
| فعالیت قابل تغییر اندازه | همه |
| نسبت ابعاد حداقل | همه |
| نسبت ابعاد حداکثر | همه |
معافیتها و کنترل کاربر
این تغییرات مختص صفحه نمایشهای بزرگ هستند؛ این تغییرات شامل صفحه نمایشهای کوچکتر از sw600dp (از جمله گوشیهای سنتی با فرم فاکتور اسلیت) نمیشوند . علاوه بر این، برنامههایی که به عنوان بازی طبقهبندی میشوند (بر اساس پرچم android:appCategory ) از این محدودیتها معاف هستند.
همچنین لازم به ذکر است که کاربران همچنان کنترل اوضاع را در دست دارند. آنها میتوانند از طریق تنظیمات نسبت تصویر سیستم، به صراحت در مورد استفاده از رفتار پیشفرض یک برنامه تصمیم بگیرند/آن را لغو کنند.
بهروزرسانیهای تغییرات پیکربندی
برای بهبود سازگاری برنامه و کمک به به حداقل رساندن پخش ویدیوی قطعشده، ورودیهای از دست رفته و سایر انواع از دست دادن حالتهای مختلکننده، ما رفتار پیشفرض برای بازآفرینی Activity را بهروزرسانی میکنیم. از اندروید ۱۷ به بعد، سیستم دیگر به طور پیشفرض برای تغییرات پیکربندی خاص که معمولاً نیازی به بازآفرینی رابط کاربری ندارند، از جمله CONFIG_KEYBOARD ، CONFIG_KEYBOARD_HIDDEN ، CONFIG_NAVIGATION ، CONFIG_UI_MODE (زمانی که فقط UI_MODE_TYPE_DESK تغییر میکند)، CONFIG_TOUCHSCREEN و CONFIG_COLOR_MODE ، Activityها را مجدداً راهاندازی نخواهد کرد. در عوض، Activityهای در حال اجرا به سادگی این بهروزرسانیها را از طریق onConfigurationChanged دریافت میکنند. اگر برنامه شما برای بارگذاری مجدد منابع برای این تغییرات به راهاندازی مجدد کامل متکی است، اکنون باید صریحاً با استفاده از ویژگی جدید manifest در android:recreateOnConfigChanges ، این امکان را فراهم کنید که مشخص کنید کدام تغییرات پیکربندی باید یک چرخه حیات کامل فعالیت (از توقف، تا نابودی و ایجاد مجدد) را به همراه ثابتهای مرتبط mcc ، mnc و ثابتهای جدید keyboard ، keyboardHidden ، navigation ، touchscreen و colorMode آغاز کنند.
برنامه خود را آماده کنید
ما ابزارها و مستنداتی را منتشر کردهایم تا این کار را برای شما آسان کنیم. پست وبلاگ متمرکز ما راهنماییهای بیشتری به همراه استراتژیهایی برای رسیدگی به مشکلات رایج دارد . برنامهها باید از طرحبندیهای افقی و عمودی برای اندازه پنجرهها در طیف کاملی از نسبتهای ابعاد پشتیبانی کنند، زیرا محدود کردن جهت یا نسبت ابعاد دیگر یک گزینه نخواهد بود. توصیه میکنیم برنامه خود را با استفاده از Android 17 Beta 1 با شبیهسازهای Pixel Tablet یا Pixel Fold (پیکربندی شده روی targetSdkPreview = "CinnamonBun" ) یا با استفاده از چارچوب سازگاری برنامه برای فعال کردن UNIVERSAL_RESIZABLE_BY_DEFAULT در دستگاههای Android 16 آزمایش کنید.
عملکرد
صف پیام بدون قفل
در اندروید ۱۷ ، برنامههایی که SDK 37 یا بالاتر را هدف قرار میدهند، پیادهسازی جدیدی از android.os.MessageQueue دریافت خواهند کرد که در آن پیادهسازی بدون قفل است. پیادهسازی جدید عملکرد را بهبود میبخشد و فریمهای از دست رفته را کاهش میدهد، اما ممکن است کلاینتهایی را که روی فیلدها و متدهای خصوصی MessageQueue تأمل میکنند، خراب کند.
جمعآوری زباله نسلی
اندروید ۱۷، قابلیت جمعآوری زباله نسلی را به جمعکننده همزمان Mark-Compact در ART اضافه میکند. این بهینهسازی، جمعآوریهای نسل جوان با دفعات بیشتر و منابع کمتر را در کنار جمعآوریهای full-heap معرفی میکند که هدف آن کاهش هزینه کلی CPU و مدت زمان جمعآوری زباله است. بهبودهای ART همچنین از طریق بهروزرسانیهای سیستم Google Play برای بیش از یک میلیارد دستگاه که اندروید ۱۲ (سطح API ۳۱) و بالاتر را اجرا میکنند، در دسترس است.
فیلدهای نهایی استاتیک اکنون واقعاً نهایی هستند
برنامههایی که از اندروید ۱۷ یا بالاتر شروع میشوند، قادر به تغییر فیلدهای «static final» نخواهند بود و به زمان اجرا اجازه میدهند بهینهسازیهای عملکرد را با شدت بیشتری اعمال کند. تلاش برای انجام این کار از طریق reflection (و deep reflection) همیشه منجر به خطای IllegalAccessException میشود. تغییر آنها از طریق خانواده متدهای SetStatic<Type>Field در JNI بلافاصله برنامه را از کار میاندازد.
محدودیتهای نمایش اعلان سفارشی
برای کاهش استفاده از حافظه، ما اندازه نماهای اعلان سفارشی را محدود میکنیم. این بهروزرسانی، روزنهی دسترسی را که به برنامهها اجازه میدهد با استفاده از URIها، محدودیتهای موجود را دور بزنند، میبندد. این رفتار توسط نسخه SDK هدف مسدود شده و برای برنامههایی که API 37 و بالاتر را هدف قرار میدهند، اعمال میشود.
اشکالزدایی عملکرد جدید، محرکهای ProfilingManager را فعال میکند.
ما چندین تریگر سیستمی جدید به ProfilingManager اضافه کردهایم تا به شما در جمعآوری دادههای عمیق برای اشکالزدایی مشکلات عملکرد کمک کنیم. این تریگرها عبارتند از TRIGGER_TYPE_COLD_START ، TRIGGER_TYPE_OOM و TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE .
برای درک نحوه تنظیم محرکهای سیستم جدید، پروفایلینگ مبتنی بر محرک را بررسی کنید و مستندات دادههای پروفایلینگ را بازیابی و تجزیه و تحلیل کنید .
رسانه و دوربین
اندروید ۱۷ ابزارهای حرفهای را برای برنامههای رسانهای و دوربین به ارمغان میآورد، با ویژگیهایی مانند انتقال یکپارچه و بلندی صدای استاندارد.
بهروزرسانیهای جلسه دوربین پویا
ما 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 معرفی میکند. با تنظیم این کلید روی ON در CaptureRequest ، TotalCaptureResult شامل فراداده از این دوربینهای فیزیکی فعال اضافی خواهد بود. میتوانید با استفاده از TotalCaptureResult.getPhysicalCameraTotalResults() به این فراداده جامع دسترسی پیدا کنید تا اطلاعات دقیقتری کسب کنید که ممکن است شما را قادر به بهینهسازی استفاده از منابع در برنامههای دوربین خود کند.
پشتیبانی از کدگذاری ویدیویی چندمنظوره (VVC)
اندروید ۱۷ پشتیبانی از استاندارد Versatile Video Coding (VVC) را اضافه میکند. این شامل تعریف نوع MIME ویدیو/vvc در MediaFormat ، اضافه کردن پروفایلهای جدید VVC در MediaCodecInfo و ادغام پشتیبانی در MediaExtractor میشود. این ویژگی به دستگاههایی با پشتیبانی از رمزگشایی سختافزاری و درایورهای سازگار ارائه خواهد شد.
کیفیت ثابت برای ضبط ویدیو
ما setVideoEncodingQuality() را به MediaRecorder اضافه کردهایم. این به شما امکان میدهد حالت کیفیت ثابت (CQ) را برای رمزگذارهای ویدیویی پیکربندی کنید و کنترل دقیقتری بر کیفیت ویدیو فراتر از تنظیمات سادهی بیتریت داشته باشید.
تقویت صدای پسزمینه
از اندروید ۱۷ به بعد، چارچوب صوتی محدودیتهایی را برای تعاملات صوتی پسزمینه از جمله پخش صدا، درخواستهای فوکوس صدا و APIهای تغییر صدا اعمال خواهد کرد تا اطمینان حاصل شود که این تغییرات عمداً توسط کاربر آغاز میشوند.
اگر برنامه سعی کند APIهای صوتی را فراخوانی کند در حالی که برنامه در چرخه حیات معتبری نیست، APIهای پخش صدا و تغییر صدا بدون هیچ استثنایی یا پیام خطایی، بیصدا با شکست مواجه میشوند. API فوکوس صوتی با کد نتیجه AUDIOFOCUS_REQUEST_FAILED با شکست مواجه میشود.
حریم خصوصی و امنیت
منسوخ شدن ویژگی ترافیک Cleartext
ویژگی android:usesCleartextTraffic اکنون منسوخ شده است. اگر برنامه شما (اندروید ۱۷) یا بالاتر را هدف قرار میدهد و به usesCleartextTraffic="true" بدون پیکربندی امنیت شبکه مربوطه متکی است، به طور پیشفرض ترافیک cleartext را مجاز نمیکند. به شما توصیه میشود برای کنترل دقیقتر به فایلهای پیکربندی امنیت شبکه مهاجرت کنید.
رمزنگاری ترکیبی HPKE
ما در حال معرفی یک رابط ارائه دهنده خدمات عمومی (SPI) برای پیادهسازی رمزنگاری ترکیبی HPKE هستیم که امکان ارتباط ایمن را با استفاده از ترکیبی از کلید عمومی و رمزگذاری متقارن ( AEAD ) فراهم میکند.
اتصال و مخابرات
تاریخچه تماس VoIP پیشرفته
ما در حال معرفی مدیریت ترجیحات کاربر برای ادغام تاریخچه تماس VoIP در برنامه هستیم. این شامل پشتیبانی از URI های آواتار تماس گیرنده و شرکت کننده در شماره گیر سیستم، امکان کنترل دقیق کاربر بر حریم خصوصی گزارش تماس و غنی سازی نمایش بصری گزارش های تماس VoIP یکپارچه می شود.
برد و نزدیکی وایفای
قابلیت جدید تشخیص مجاورت (Proximity Detection) در محدودهیابی وایفای (Wi-Fi Rangeing) بهبود یافته است که از محدودهیابی پیوسته و کشف ایمن نظیر به نظیر (peer-to-peer) پشتیبانی میکند. بهروزرسانیهای محدودهیابی مبتنی بر وایفای شامل APIهای جدید برای کنترلکنندههای نظیر و ذخیرهسازی PMKID برای محدودهیابی ایمن 11az میشود.
بهرهوری و ابزارهای توسعهدهندگان
بهروزرسانیهای برنامههای دستگاه همراه
ما دو پروفایل جدید را به CompanionDeviceManager معرفی کردهایم تا تمایز دستگاهها و مدیریت مجوزها را بهبود بخشیم:
- دستگاههای پزشکی: این پروفایل به برنامههای کاربردی موبایل دستگاههای پزشکی اجازه میدهد تا تمام مجوزهای لازم را با یک لمس درخواست کنند و فرآیند راهاندازی را سادهتر کنند.
- ردیابهای تناسب اندام: نمایه DEVICE_PROFILE_FITNESS_TRACKER به برنامههای همراه اجازه میدهد تا صریحاً اعلام کنند که در حال مدیریت یک ردیاب تناسب اندام هستند. این امر ضمن استفاده مجدد از مجوزهای نقش ساعت موجود، تجربیات کاربری دقیقی را با نمادهای متمایز تضمین میکند.
همچنین، CompanionDeviceManager اکنون یک پنجره محاورهای یکپارچه برای درخواستهای اتصال دستگاه و مجوز دستگاههای مجاور ارائه میدهد. میتوانید از متد جدید setExtraPermissions در AssociationRequest.Builder برای دستهبندی درخواستهای مجوز دستگاههای مجاور در جریان اتصال موجود استفاده کنید و تعداد پنجرههای محاورهای ارائه شده به کاربر را کاهش دهید.
شروع کار با اندروید ۱۷
شما میتوانید هر دستگاه پیکسل پشتیبانیشدهای را برای دریافت این بهروزرسانی و بهروزرسانیهای بعدی اندروید بتا بهصورت بیسیم ثبتنام کنید . اگر دستگاه پیکسل ندارید، میتوانید از ایمیجهای سیستم ۶۴ بیتی با شبیهساز اندروید در اندروید استودیو استفاده کنید .
اگر در حال حاضر در برنامه بتای اندروید هستید، بهروزرسانی به نسخه بتا ۱ از طریق اینترنت به شما ارائه خواهد شد.
اگر اندروید بتای 26Q1 را دارید و میخواهید نسخه پایدار نهایی 26Q1 را دریافت کنید و از نسخه بتا خارج شوید، باید بهروزرسانی بیسیم به بتای 1 26Q2 را نادیده بگیرید و منتظر انتشار نسخه 26Q1 باشید.
ما منتظر بازخورد شما هستیم، بنابراین لطفاً مشکلات را گزارش دهید و درخواستهای مربوط به ویژگیها را در صفحه بازخورد ارسال کنید. هرچه زودتر بازخورد شما را دریافت کنیم، میتوانیم موارد بیشتری را در نسخه نهایی بگنجانیم.
برای بهترین تجربه توسعه با اندروید ۱۷، توصیه میکنیم از آخرین پیشنمایش اندروید استودیو (Panda) استفاده کنید. پس از راهاندازی، در اینجا برخی از کارهایی که باید انجام دهید، آورده شده است:
- با استفاده از SDK جدید کامپایل کنید، در محیطهای CI آزمایش کنید و هرگونه مشکل را در ردیاب ما در صفحه بازخورد گزارش دهید.
- برنامه فعلی خود را از نظر سازگاری آزمایش کنید، بفهمید که آیا برنامه شما تحت تأثیر تغییرات اندروید ۱۷ قرار میگیرد یا خیر، و برنامه خود را روی یک دستگاه یا شبیهساز که اندروید ۱۷ را اجرا میکند نصب کنید و آن را به طور گسترده آزمایش کنید.
ما تصاویر سیستم پیشنمایش/بتا و SDK را به طور منظم در طول چرخه انتشار اندروید ۱۷ بهروزرسانی خواهیم کرد. پس از نصب نسخه بتا، به طور خودکار بهروزرسانیهای آینده را برای همه پیشنمایشها و بتاهای بعدی از طریق بیسیم دریافت خواهید کرد.
برای اطلاعات کامل، به سایت توسعهدهندگان اندروید ۱۷ مراجعه کنید.
به گفتگو بپیوندید
همچنان که به سمت پایداری پلتفرم و انتشار نهایی اندروید ۱۷ در اواخر امسال حرکت میکنیم، بازخورد شما همچنان ارزشمندترین دارایی ما است. چه از اولین کاربران کانال Canary باشید و چه از توسعهدهندگان اپلیکیشن که در حال آزمایش نسخه بتا ۱ هستید، به عضویت در انجمنهای ما و ثبت بازخورد فکر کنید. ما به نظرات شما گوش میدهیم.
ادامه مطلب

اخبار محصول
امروز، ما توسعه اندروید را با Gemma 4، جدیدترین مدل متنباز پیشرفته ما که با استدلال پیچیده و قابلیتهای فراخوانی خودکار ابزار طراحی شده است، بهبود میبخشیم.
Matthew McCullough • ۲ دقیقه مطالعه

اخبار محصول
اندروید ۱۷ امروز رسماً با نسخه بتا ۳ به پایداری پلتفرم رسید. این بدان معناست که سطح API قفل شده است؛ شما میتوانید آزمایش سازگاری نهایی را انجام داده و برنامههای هدفمند اندروید ۱۷ خود را به پلی استور ارسال کنید.
Matthew McCullough • ۵ دقیقه مطالعه

اخبار محصول
ما میخواهیم ساخت برنامههای اندروید با کیفیت بالا را برای شما سریعتر و آسانتر کنیم، و یکی از راههایی که به شما کمک میکنیم تا بهرهوری بیشتری داشته باشید، قرار دادن هوش مصنوعی در دسترس شماست.
Matthew McCullough • ۲ دقیقه مطالعه
در جریان باشید
جدیدترین بینشهای توسعه اندروید را به صورت هفتگی در صندوق ورودی خود دریافت کنید.

