اخبار محصول

دومین نسخه بتای اندروید ۱۷

مطالعه ۶ دقیقه‌ای
Matthew McCullough
معاون رئیس، مدیریت محصول، توسعه‌دهنده اندروید

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

این نسخه، پس از انتشار سالانه‌ی SDK اصلی در سه‌ماهه‌ی دوم و یک به‌روزرسانی جزئی SDK، تغییر در روند انتشار ما را ادامه می‌دهد.

تجربه کاربری و رابط کاربری سیستم

حباب‌ها

حباب‌ها (Bubbles) یک ویژگی حالت پنجره‌ای است که یک تجربه رابط کاربری شناور جدید را جدا از API حباب‌های پیام‌رسانی ارائه می‌دهد. کاربران می‌توانند با فشار طولانی مدت روی آیکون یک برنامه در لانچر، یک حباب برنامه روی تلفن، تبلت یا گوشی تاشو خود ایجاد کنند. در صفحه نمایش‌های بزرگ، یک نوار حباب به عنوان بخشی از نوار وظیفه وجود دارد که کاربران می‌توانند حباب‌ها را در آن سازماندهی، بین آنها جابجا کنند و به نقاط ثابت روی صفحه نمایش منتقل کنند.

حباب‌ها.gif

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

حباب‌ها هنوز به طور کامل در بتا ۲ فعال نشده‌اند. در نسخه بعدی اندروید ۱۷ به دنبال آنها باشید.

رابط برنامه‌نویسی کاربردی (API) قطره‌چکان

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

Eyedropper_Test.webp
  val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

انتخابگر مخاطبین

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

انتخابگر مخاطب اندروید ۱۷.gif
  val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

سازگاری آسان‌تر با تاچ‌پدها برای ثبت اشاره‌گر

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

  // To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

مرزهای استراحت انتخابگر تعاملی

با فراخوانی getInitialRestingBounds در ChooserSession اندروید، برنامه شما می‌تواند موقعیت هدفی را که Chooser پس از اتمام انیمیشن‌ها و بارگذاری داده‌ها اشغال می‌کند، شناسایی کند و تنظیمات رابط کاربری بهتری را امکان‌پذیر سازد.

اتصال و قابلیت اتصال بین دستگاهی

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

یک API جدید Handoff به شما امکان می‌دهد وضعیت برنامه را برای از سرگیری در دستگاه دیگری، مانند تبلت اندرویدی، مشخص کنید. در صورت انتخاب، سیستم وضعیت را از طریق CompanionDeviceManager همگام‌سازی می‌کند و پیشنهادی برای handoff در لانچر دستگاه‌های نزدیک کاربر نمایش می‌دهد. این ویژگی برای ارائه پیوستگی یکپارچه وظایف طراحی شده است و کاربران را قادر می‌سازد تا دقیقاً از همان جایی که در گردش کار خود در اکوسیستم اندروید خود متوقف شده‌اند، ادامه دهند. نکته مهم این است که Handoff از انتقال‌های بومی برنامه به برنامه و همچنین پشتیبان برنامه به وب پشتیبانی می‌کند و حداکثر انعطاف‌پذیری را ارائه می‌دهد و حتی اگر برنامه بومی روی دستگاه گیرنده نصب نشده باشد، یک تجربه کامل را تضمین می‌کند.

APIهای پیشرفته‌ی مسافت‌یابی

ما در حال اضافه کردن پشتیبانی از ۲ فناوری جدید مسافت‌یاب هستیم -

  1. UWB DL-TDOA که به برنامه‌ها امکان می‌دهد از UWB برای ناوبری داخلی استفاده کنند. این API surface با مشخصات FIRA (Fine Rangeing Consortium) 4.0 DL-TDOA سازگار است و ناوبری داخلی با حفظ حریم خصوصی (جلوگیری از ردیابی دستگاه توسط لنگر) را امکان‌پذیر می‌کند.
  2. تشخیص مجاورت که به برنامه‌ها امکان می‌دهد از مشخصات جدید مسافت‌یابی که توسط WFA (اتحادیه وای‌فای) اتخاذ شده است، استفاده کنند. این فناوری در مقایسه با مشخصات مسافت‌یابی مبتنی بر Wifi Aware موجود، قابلیت اطمینان و دقت بهتری را ارائه می‌دهد.

پیشرفت‌های طرح داده

برای بهینه‌سازی کیفیت رسانه، برنامه شما اکنون می‌تواند حداکثر نرخ داده اختصاص داده شده توسط اپراتور را برای برنامه‌های پخش جریانی با استفاده از getStreamingAppMaxDownlinkKbps و getStreamingAppMaxUplinkKbps بازیابی کند.

قابلیت‌های اصلی، حریم خصوصی و عملکرد

دسترسی به شبکه محلی

اندروید ۱۷ مجوز زمان اجرا ACCESS_LOCAL_NETWORK را برای محافظت از کاربران در برابر دسترسی غیرمجاز به شبکه محلی معرفی می‌کند. از آنجا که این مجوز تحت گروه مجوزهای NEARBY_DEVICES موجود قرار می‌گیرد، کاربرانی که قبلاً مجوزهای NEARBY_DEVICES دیگری را اعطا کرده‌اند، دیگر درخواستی دریافت نخواهند کرد. با اعلام و درخواست این مجوز، برنامه شما می‌تواند دستگاه‌های موجود در شبکه محلی (LAN)، مانند دستگاه‌های خانه هوشمند یا گیرنده‌های Casting را کشف و به آنها متصل شود. این امر مانع از سوءاستفاده برنامه‌های مخرب از دسترسی نامحدود به شبکه محلی برای ردیابی و انگشت‌نگاری مخفیانه کاربر می‌شود. برنامه‌هایی که اندروید ۱۷ یا بالاتر را هدف قرار می‌دهند، اکنون دو مسیر برای حفظ ارتباط با دستگاه‌های LAN خواهند داشت: اتخاذ انتخابگرهای دستگاه با واسطه سیستم و حفظ حریم خصوصی برای رد شدن از درخواست مجوز، یا درخواست صریح این مجوز جدید در زمان اجرا برای حفظ ارتباط شبکه محلی.

پخش تغییر آفست منطقه زمانی

اندروید اکنون یک هدف پخش قابل اعتماد، ACTION_TIMEZONE_OFFSET_CHANGED ، ارائه می‌دهد که هنگام تغییر اختلاف منطقه زمانی سیستم، مانند هنگام تغییر ساعت تابستانی، فعال می‌شود. این، مکمل اهداف پخش موجود ACTION_TIME_CHANGED و ACTION_TIMEZONE_CHANGED است که به ترتیب هنگام تغییر مهر زمانی یونیکس و تغییر شناسه منطقه زمانی فعال می‌شوند.

مدیریت و اولویت‌بندی NPU

برنامه‌هایی که اندروید ۱۷ را هدف قرار می‌دهند و نیاز به دسترسی مستقیم به NPU دارند، باید FEATURE_NEURAL_PROCESSING_UNIT را در مانیفست خود اعلام کنند تا از دسترسی به NPU جلوگیری شود. این شامل برنامه‌هایی می‌شود که از نماینده LiteRT NPU ، SDK های مخصوص فروشنده و همچنین NNAPI منسوخ شده استفاده می‌کنند.

پشتیبانی از ICU 78 و یونیکد 17

کتابخانه‌های اصلی بین‌المللی‌سازی به ICU 78 به‌روزرسانی شده‌اند که پشتیبانی از اسکریپت‌ها، کاراکترها و بلوک‌های ایموجی جدید را گسترش می‌دهد و قالب‌بندی مستقیم اشیاء زمانی را امکان‌پذیر می‌سازد.

محافظت از طریق OTP در پیامک

اندروید با به تأخیر انداختن خودکار دسترسی به پیامک‌های OTP، محافظت از SMS OTP خود را گسترش می‌دهد. پیش از این، این محافظت عمدتاً بر روی فرمت SMS Retriever متمرکز بود که در آن تحویل پیام‌های حاوی هش بازیابی پیامک برای اکثر برنامه‌ها به مدت سه ساعت به تأخیر می‌افتاد. با این حال، برای برخی از برنامه‌ها مانند برنامه پیش‌فرض پیامک و غیره و برنامه‌ای که با هش مطابقت دارد، از این تأخیر معاف هستند. این به‌روزرسانی، محافظت را به همه پیامک‌های OTP گسترش می‌دهد. برای اکثر برنامه‌ها، پیامک‌های حاوی OTP فقط پس از سه ساعت تأخیر قابل دسترسی خواهند بود تا از ربودن OTP جلوگیری شود. پخش SMS_RECEIVED_ACTION متوقف می‌شود و پرس‌وجوهای پایگاه داده ارائه دهنده پیامک فیلتر می‌شوند. پیامک پس از تأخیر برای این برنامه‌ها در دسترس خواهد بود.

دسترسی با تأخیر به پیامک‌های با فرمت WebOTP

اگر برنامه اجازه خواندن پیامک‌ها را داشته باشد اما گیرنده مورد نظر OTP نباشد (همانطور که توسط تأیید دامنه تعیین می‌شود)، پیامک با فرمت WebOTP فقط پس از گذشت سه ساعت قابل دسترسی خواهد بود. این تغییر برای بهبود امنیت کاربر طراحی شده است و تضمین می‌کند که فقط برنامه‌های مرتبط با دامنه ذکر شده در پیام می‌توانند کد تأیید را به صورت برنامه‌نویسی بخوانند. این تغییر برای همه برنامه‌ها صرف نظر از سطح API هدف آنها اعمال می‌شود.

دسترسی با تأخیر به پیامک‌های استاندارد با OTP

برای پیام‌های متنی حاوی OTP که از فرمت‌های WebOTP یا SMS Retriever استفاده نمی‌کنند، پیامک OTP برای اکثر برنامه‌ها فقط پس از سه ساعت قابل دسترسی خواهد بود. این تغییر فقط برای برنامه‌هایی اعمال می‌شود که اندروید ۱۷ (سطح API ۳۷) یا بالاتر را هدف قرار می‌دهند.

برخی از برنامه‌ها مانند پیامک پیش‌فرض، برنامه دستیار، به همراه برنامه‌های همراه دستگاه متصل و غیره از این تأخیر معاف خواهند بود.

تمام برنامه‌هایی که برای استخراج OTP به خواندن پیامک‌ها متکی هستند، باید به استفاده از SMS Retriever یا APIهای رضایت کاربر SMS روی آورند تا از عملکرد مداوم آنها اطمینان حاصل شود.

برنامه اندروید ۱۷

ما قصد داریم به سرعت از این نسخه بتا به نقطه عطف پایداری پلتفرم خود که برای ماه مارس در نظر گرفته شده است، حرکت کنیم. در این نقطه عطف، APIهای نهایی SDK/NDK را ارائه خواهیم داد. از آن زمان به بعد، برنامه شما می‌تواند SDK 37 را هدف قرار دهد و در Google Play منتشر شود تا به شما در تکمیل آزمایش و جمع‌آوری بازخورد کاربران در چند ماه قبل از انتشار عمومی اندروید ۱۷ کمک کند.

جدول زمانی انتشار اندروید.png

سالی پر از انتشار

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

جدول زمانی انتشار نسخه اندروید_2.png

شروع کار با اندروید ۱۷

شما می‌توانید هر دستگاه پیکسل پشتیبانی‌شده‌ای را برای دریافت این به‌روزرسانی و به‌روزرسانی‌های بعدی اندروید بتا به‌صورت بی‌سیم ثبت‌نام کنید . اگر دستگاه پیکسل ندارید، می‌توانید از ایمیج‌های سیستم ۶۴ بیتی با شبیه‌ساز اندروید در اندروید استودیو استفاده کنید .

اگر در حال حاضر در برنامه بتای اندروید هستید، به‌روزرسانی به نسخه بتا ۲ از طریق اینترنت به شما ارائه خواهد شد.

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

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

برای بهترین تجربه توسعه با اندروید ۱۷، توصیه می‌کنیم از آخرین پیش‌نمایش اندروید استودیو (Panda) استفاده کنید. پس از راه‌اندازی، در اینجا برخی از کارهایی که باید انجام دهید، آورده شده است:

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

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

برای همه پیش‌نمایش‌ها و نسخه‌های بتای بعدی، از طریق اینترنت بی‌سیم (over-the-air)

برای اطلاعات کامل، به سایت توسعه‌دهندگان اندروید ۱۷ مراجعه کنید.

به گفتگو بپیوندید

همچنان که به سمت پایداری پلتفرم و در دسترس قرار گرفتن عمومی اندروید ۱۷ در اواخر امسال حرکت می‌کنیم، بازخورد شما همچنان ارزشمندترین دارایی ما است. چه از اولین کاربران کانال Canary باشید و چه از توسعه‌دهندگان اپلیکیشن که در حال آزمایش نسخه بتا ۲ هستید، به عضویت در انجمن‌های ما و ثبت بازخورد فکر کنید. ما به نظرات شما گوش می‌دهیم.

    نوشته شده توسط:

    ادامه مطلب