پایه برنامه‌ها

تأمین انرژی سطوح تعاملی با Remote Compose

بلندگو

درباره

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

Remote Compose روش جدیدی برای نمایش واسط کاربر تعاملی و گویا در سطوح ازراه‌دور مانند ابزاره‌ها معرفی می‌کند. RemoteCompose با سریالی کردن طرح‌بندی‌ها در محموله‌های دودویی فشرده، میانای کاربری را از اجرای میزبان جدا می‌کند تا مزایای قابل‌توجهی ارائه دهد.

مزایای کلیدی عبارت‌اند از تعامل‌پذیری Edge که پردازش با عملکرد بالا را ازطریق اجرای محلی در دستگاه از راه دور امکان‌پذیر می‌کند، مقیاس‌بندی روان که به میاناهای کاربر اجازه می‌دهد ازطریق ارزیابی‌های مؤلفه سمت راه دور در میان عوامل شکل متنوع بازآرایی شوند، و گردش کار توسعه‌دهنده یکپارچه که نیاز به چارچوب‌های میانای کاربر از راه دور مختص پلاتفرم را ازطریق میاناهای برنامه‌سازی کاربردی آشنای Jetpack Compose برطرف می‌کند.

این جلسه این مزایا را باز می‌کند و نمونه‌های تولید زنده را ارائه می‌دهد، ازجمله ابزارهای مدرن Wear OS و تجربه قابل‌مشاهده Wear Workout Tracker در Runkeeper.

خلاصه

  • ‫Remote Compose به‌جای ارسال برنامه یا کپی صفحه در مرزهای فرایند، واسط کاربر را در یک سند دودویی فشرده بسته‌بندی می‌کند.
  • توسعه‌دهندگان بااستفاده از Compose API یا JSON سند ایجاد می‌کنند. Android Studio هنگام نوشتن ترکیب‌پذیرها، پیش‌نمایش‌های زنده ارائه می‌دهد.
  • اسناد بارشده مستقیماً در پخش‌کننده اجرا می‌شوند. این مؤلفه‌ها رویدادهایی مانند تغییر اندازه و لمس را بدون نیاز به رفت‌وبرگشت به سازنده آن مدیریت می‌کنند.
  • بهینه‌سازی‌های داخلی مانند الگوهای مؤلفه و فشرده‌سازی سند، حجم داده‌های ارسالی را به چند کیلوبایت کاهش می‌دهند.
  • Jetpack Glance اسناد Remote Compose را برای ابزاره‌های راه‌انداز و ابزاره‌های Wear OS منتشر می‌کند. این کار واسط کاربر را از اجرای برنامه جدا می‌کند تا در مصرف باتری صرفه‌جویی شود.

منابع

Gemini Notebook

موضوع

  • ترکیب از راه دور
  • jetpack-compose
  • android-widgets
  • wear-os
  • ui-framework

آوانویسی

مقدمه و نمای کلی سطوح از دور

  • سلام به همه.

  • نام من نیکولاس رورد است، من مدیر فنی پروژه Remote Compose هستم.

  • من جان هوفورد هستم.

  • من توسعه‌دهنده Remote Compose هستم.

  • و من جان زولر هستم و در Wear OS روابط توسعه‌دهنده را انجام می‌دهم.

  • بسیارخوب، بیایید شروع کنیم.

  • بنابراین، ابتدا یک نمای کلی سریع از نوع مشکلی که دقیقاً سعی داریم با Remote Compose حل کنیم، به شما ارائه می‌دهم، درست است؟

  • بنابراین معمولاً وقتی درباره میانای کاربر در Android صحبت می‌کنید یا فکر می‌کنید، میانای کاربر را به‌عنوان بخشی از برنامه و فرایند برنامه خود درنظر می‌گیرید، درست است؟

  • مکان‌های مختلف زیادی وجود دارد که گاهی اوقات می‌خواهید واسط کاربر خود را بگیرید، آن را بسته‌بندی کنید، و به جای دیگری مانند سطح دوردست ارسال کنید.

  • بنابراین منظور ما از سطح دور، تقریباً شبیه به آن مثال‌ها است، مانند سبک‌های ساعت، ابزارک‌ها، حتی می‌تواند برنامه خودتان یا برنامه دیگری باشد، درست است؟

  • بنابراین، همه این‌ها اساساً نمونه‌هایی از سطوح راه‌دور هستند.

  • بنابراین جایی، جای دیگری، می‌تواند برنامه شما باشد، می‌تواند سرور باشد، جای دیگری می‌داند چه چیزی به آن سطح دور بفرستد.

  • و…

  • بلندگویم چطور؟

  • بین این دو، اساساً فاصله‌ای وجود دارد.

  • و این فاصله می‌تواند واقعاً یک فاصله واقعی باشد، می‌تواند یک اتصال شبکه باشد، درست است؟

  • همچنین می‌تواند فقط مرز فرایند باشد.

  • ممکن است در یک دستگاه باشید.

  • اما هرچه باشد، هزینه‌ای دارد.

  • و ساده‌ترین چیزی که می‌توانید برای گرفتن آن واسط کاربر و ارسال آن فکر کنید، فقط گرفتن یک کپی از صفحه است، درست است، و ارسال آن.

  • مشکل این است که خیلی سریع نیست، درست است؟

  • بنابراین کاری که به‌جای آن با Remote Compose انجام می‌دهیم این است که سندی را ارسال می‌کنیم که آن واسط کاربر را نشان می‌دهد.

  • و این را در ذهن داشته باشید، کوچک بودن مزایای زیادی دارد.

  • مهم است.

  • ما آن را در اولین Pixel که ارسال کردید دیدیم، اما درواقع برای هر نوع به‌روزرسانی که می‌خواهید در آن سطح انجام دهید صادق است، درست است؟

  • رفت‌وبرگشت را دریافت کردید.

  • بنابراین چیزی مثل رویداد، کلیک، یا لمس در آن سطح دور دریافت می‌کنید.

  • برای دریافت نسخه جدید باید به سازنده آن مراجعه کنید.

  • و این، این خوب نیست.

  • بنابراین از بسیاری جهات، این همان چیزی است که ما سعی داریم با Remote Compose حل کنیم.

معماری Remote Compose و ساختار سند

  • بنابراین دیدیم که سند ارسال شد.

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

  • یکی از آن‌ها نحوه ایجاد آن سند است.

  • و دومی نحوه بازی کردن آن است.

  • اشاره کردم که داریم سندی می‌سازیم.

  • ما کپی صفحه‌نمایش ارسال نمی‌کنیم و همچنین درخواستی ارسال نمی‌کنیم.

  • بنابراین سه روش مختلف برای کمک به شما در ایجاد آن سند داریم.

  • یکی Compose API است، دومی Kotlin API رویه‌ای، KMP، و سومی قالب JSON است.

  • همه آن‌ها بایت‌های یکسانی را منتشر می‌کنند.

  • بنابراین مجموعه‌ای از ابزارها را برای ایجاد این اسناد ارائه می‌دهیم و با Compose API، درواقع می‌توانیم از ابزارهای موجود در Android Studio بهره ببریم.

  • بنابراین، برای مثال، می‌توانید از پیش‌نمایش برای دیدن زنده آنچه درحال توسعه آن هستید، مستقیماً در IDE استفاده کنید.

  • اما درحال کار روی ابزارهای قدرتمند جدیدی مثل بازرس سند نیز هستیم.

  • بیایید نگاهی سریع به این بیندازیم که این سند واقعاً چیست.

  • این در اصل فهرستی از عملیات است که در یک نمایش دودویی فشرده کدگذاری شده است و این عملیات یک میانای کاربر مستقل را توصیف می‌کند که می‌تواند به آن سطح دور فرستاده شود.

  • بنابراین یکی از ویژگی‌های بسیار مهم این اسناد این است که کوچک هستند.

  • و همان‌طور که دیدیم، کوچک خوب است.

  • بنابراین معمولاً درباره چند کیلوبایت صحبت می‌کنیم، درست است؟

  • اما حتی واسط کاربری پیچیده‌تر با چیزی با چیدمان بسیار تطبیقی، ما هنوز درباره چند ده کیلوبایت صحبت می‌کنیم، درست است؟

  • و ما همه دارایی‌ها را در آن سند بسته‌بندی می‌کنیم.

  • بنابراین اگر به آن فکر کنید، تنها چیزی که واقعاً می‌تواند در سند فضا اشغال کند این است که شروع به بسته‌بندی نقشه‌های بیتی کنید.

  • پس این را به‌خاطر داشته باشید.

  • به‌هرحال، دلیل اصلی اینکه ما سند ارسال می‌کنیم و نه کپی صفحه‌نمایش همین است.

  • وقتی درباره کوچک بودن و اهمیت آن صحبت می‌کنیم، فقط بحث ارتباطات نیست.

  • این یک نوع مورد گوشه‌ای مرکزی از فلسفه پشت Remote Compose است.

  • همان‌طور که دیدیم، این موضوع قطعاً بر مدت‌زمان لازم برای نمایش اولین پیکسل روی صفحه تأثیر می‌گذارد، اما متأسفانه، ببخشید.

  • این همچنین به این معنی است که ما می‌توانیم، در قابلیت‌های برابر ظرفیت‌های برابر سطح، ما می‌توانیم از اسناد بیشتری نسبت به حالت دیگر استفاده کنیم، درست است، در حالی که هنوز کارآمد هستیم.

  • و این چیزی است که وقتی از ابزاره‌ها پشتیبانی کنیم، خواهیم دید که از آن بهره می‌بریم.

  • خود پخش‌کننده‌ها هم معمولاً بسیار کوچک هستند و وابستگی‌های بسیار کمی دارند.

  • و این واقعیت که آن‌ها کوچک هستند و وابستگی‌های کمی دارند به این معنی است که می‌توانیم دسترسی را به جایی گسترش دهیم که واقعاً بتوانیم اسناد Remote Compose را پخش کنیم.

  • و این به‌طور خاص برای پلاتفرم‌های محدودشده مهم است، همان‌طور که خواهید دید.

  • بنابراین من درباره انتقال و فاصله زیاد صحبت کردم، اما Remote Compose به‌خودی‌خود واقعاً با انتقال سروکار ندارد.

  • این به شما بستگی دارد.

  • کاری که ما انجام می‌دهیم این است که همه این‌ها را در یک میان‌گیر بایت بسته‌بندی می‌کنیم که سپس می‌توانید آن را با روش مناسب به سطح راه دور ارسال کنید.

  • برای ابزارک‌ها، ما به شما کمک می‌کنیم، ما یک رابط برای شما ارائه می‌دهیم.

  • اما به‌طور کلی، نکته مفیدی است که باید به‌خاطر داشته باشید، شما مسئول حمل‌ونقل هستید.

  • و وقتی پخش‌کننده آن سند را دریافت کرد، هرطور که آن را ارسال کرده باشید می‌تواند فهرست عملیات را استخراج کند و آن‌ها را به فرمان‌های ترسیم، درخت‌های چیدمان، و عبارت‌ها تبدیل کند و همه این‌ها باهم می‌توانند تجربه کاربری واقعاً غنی‌ای ایجاد کنند.

  • بنابراین، نکته‌ای که باید درنظر داشته باشید این است که با دادن قدرت تصمیم‌گیری به شما درباره نحوه انتقال سند، به این معنی است که می‌توانید از Remote Compose به‌عنوان ابزاری در بسیاری از سناریوها استفاده کنید، برخی از آن‌ها را حتی ممکن است ما فکر نکرده باشیم، درست است؟

  • وقتی سند توسط پخش‌کننده بار می‌شود، خودش اجرا می‌شود.

  • و این تقریباً کل ایده است.

  • ما می‌خواهیم سند یک رابط کاربری ایجاد کند که تا حدودی خودمختار باشد، که مجبور نباشد به کسی که آن را ایجاد کرده است برگردد، درست است؟

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

  • و گاهی اوقات، اگر لازم باشد به عقب برگردید، ببخشید، به مرحله ایجاد، می‌توانید درواقع کنشی را درخواست کنید و بگویید «لطفاً سند جدیدی به من بدهید.»

  • ما سه پخش‌کننده رسمی را عمدتاً ازطریق کتابخانه‌های AndroidX در Remote Compose ارائه می‌دهیم.

  • یکی از آن‌ها پخش‌کننده Compose است، بنابراین می‌توانید از آن در برنامه Compose خود استفاده کنید.

  • اگر هنوز از View استفاده می‌کنید، ما همچنین یک پخش‌کننده View داریم.

  • همچنین پیاده‌سازی RemoteViews را داریم که از میانای برنامه‌سازی کاربردی ۳۶ در پلاتفرم Android ارائه می‌شود و به شما امکان می‌دهد بااستفاده از Remote Compose، ابزاره‌های Android را که در راه‌انداز اجرا می‌شوند ایجاد کنید.

  • اگر علاقه‌مند باشید، چند پخش‌کننده آزمایشی هم داریم، ازجمله C++‎ که روی Skia اجرا می‌شود، TypeScript، و حتی Compose Multiplatform.

  • بنابراین، ایده این است که همان فناوری‌ای که استفاده می‌کنید می‌تواند اساساً برای ارائه در بسیاری از سطوح و پلاتفرم‌های مختلف استفاده شود.

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

  • آره.

قابلیت‌های پردازش، مؤلفه‌ها، و تعامل

  • بنابراین، بیایید کمی درباره قابلیت‌هایی که در سند Remote Compose دریافت خواهید کرد صحبت کنیم.

  • بنابراین، در پایه آن، یک Canvas وجود دارد و تمام ویژگی‌های یک Canvas Android را دارد.

  • اما با چند API اضافی در آن.

  • اما یکی از چیزهای خاص این است که همه شناورهایی که در آن Android Canvas دارید، می‌توانند با عبارت‌ها جایگزین شوند.

  • این به شما امکان می‌دهد پویانمایی، مقیاس‌بندی پویا، و چیدمان‌های انعطاف‌پذیر را همان‌طور که در اینجا می‌بینید انجام دهید.

  • کارهای مختلف زیادی می‌توان با آن انجام داد.

  • کمی بیشتر درباره عبارات.

  • مجموعه غنی‌ای از عملگرها از ریاضیات معمولی، مثلثات، دسترسی به آرایه، و درون‌یابی اسپلاین دارید.

  • و یکی از چیزهای جالب این است که هر مقداری که تغییر می‌کند می‌تواند پویانمایی شود، بنابراین می‌توانید تغییر در وضعیت هر مقداری را پویانمایی کنید.

  • در این طراحی خاص که اینجا می‌بینید، هرکدام از این آونگ‌ها نوع متفاوتی از پویانمایی را انتخاب می‌کند و همه آن‌ها در Remote Compose دردسترس هستند.

  • علاوه‌بر آن، مؤلفه‌های پایه، موارد Compose، و مواردی را که می‌دانید داریم.

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

  • اما علاوه‌بر آن، مؤلفه‌های تطبیقی داریم.

  • یکی از چیزهای خوب در این مورد این است که چون در آن نقطه شما کنترل سندتان را در دست ندارید، این‌ها می‌توانند ناپدید شدن و ظاهر شدن و رفتن اشیاء را مدیریت کنند، به‌دلیل تغییر اندازه و غیره برگردند، همه این‌ها بدون بازگشت به منبع سند انجام می‌شود.

  • و علاوه‌بر آن، پویانمایی مؤلفه را داریم.

  • همه تغییرات را می‌توان پویانمایی کرد، بنابراین اگر چیزی ازبین برود، می‌توانید آن را پویانمایی کنید.

  • و می‌توانید پویانمایی‌های سفارشی خودتان را بنویسید.

  • در این مورد، می‌بینید که برخی‌از آن‌ها از سایه‌زن و انواع چیزها استفاده می‌کنند.

  • یکی دیگر از کارهایی که می‌توانیم انجام دهیم تعامل در آنجا است، بنابراین فقط تصاویر زیبا نیست.

  • می‌توانید روی چیزها کلیک کنید، رویدادهای لمسی داشته باشید، پیمایش کنید، و کارهایی از این قبیل انجام دهید.

  • همچنین دسترس‌پذیری مهم است، بنابراین همه APIهای دسترس‌پذیری شما آنجا هستند.

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

  • همه این‌ها در سند است.

  • هرچیزی که می‌بینید، برای این کار به سرور برنمی‌گردد.

  • اکنون، اگر آن را در یک برنامه ساخته باشید، در این حالت، بخش‌های آبی یک برنامه هستند و بخش‌های سیاه یک سند Remote Compose هستند.

  • درواقع می‌توانید بین این دو تعامل برقرار کنید.

  • در اینجا، من مقادیر را افزایش می‌دهم و شما می‌بینید که آن‌ها توسط برنامه دریافت می‌شوند، چیزی که ما آن را میزبان می‌نامیم، و همچنین می‌توانم یک لغزنده را حرکت دهم و این کار مقادیر داخل سند را تغییر می‌دهد.

  • بنابراین، می‌توانم هر دو جهت را برای آن انتخاب کنم.

ساختن واسط کاربر با عبارت‌ها و Compose API

  • بنابراین، بیایید به نحوه ایجاد یکی از این اسناد بپردازیم.

  • درواقع سه میانای برنامه‌سازی کاربردی وجود دارد: Compose،‏ Kotlin، و JSON.

  • Compose API، شما تاحدودی می‌دانید که چگونه است.

  • این چند پیچیدگی دارد و ما آن را با جزئیات بررسی خواهیم کرد.

  • Kotlin API بسیار رویه‌ای است.

  • شما یک فرمان در سند دارید، بنابراین نوعی رابطه یک‌به‌یک است.

  • ‫JSON یک نحو JSON است که می‌توانید ما مبدل‌هایی داریم که آن را به Remote Compose تبدیل می‌کند.

  • همچنین اگر با مدل زبانی بزرگ کار می‌کنید مفید است زیرا این مدل‌ها می‌توانند اسناد را بخوانند و بنویسند.

  • So, let's actually go into the Compose and build something.

  • در این حالت، خواهید دید که شما It's a composable and a remote composable هستید.

  • ما یک بوم داریم-- نه یک بوم، بلکه یک بوم از راه دور و اصلاح‌کننده‌های از راه دور، اما خود اصلاح‌کننده‌ها به نوعی یکسان هستند، چیزهایی که می‌دانید و دوست دارید.

  • اکنون، همه فرمان‌های داخل آن درواقع فرمان‌های سند «ترکیب‌بندی ازراه‌دور» فرمان ازراه‌دور را درحین اجرا تولید می‌کنند.

  • در این مورد، کشیدن یک دایره و سپس اضافه کردن چند عدد اعشاری و عبارت بااستفاده از زمان در آن عبارت‌ها.

  • و وقتی می‌روم و آن را در پویانمایی روشن می‌کنم، توجه کنید که این یک پیش‌نمایش زنده از Android Studio است و درواقع به‌صورت زنده برای شما اجرا می‌شود.

  • این عبارات را در آنجا می‌بینید.

  • بیایید کمی درباره اینکه این موضوع چیست و چگونه کار می‌کند صحبت کنیم.

  • در سمت راست، چیزی شبیه به صفحه‌گسترده می‌بینید.

  • جدولی از مقادیر در اعداد اعشاری است.

  • و همچنین یک درخت وابستگی دارد، بنابراین می‌دانید که یک چیز کجا به چیز دیگری متصل می‌شود.

  • هرگاه چیزی تغییر کند، وابسته‌های آن به‌عنوان کثیف علامت‌گذاری می‌شوند تا پاک‌سازی شوند و تنظیم شوند.

  • و همان‌طور که اجرا می‌شود، همه وابستگی‌های آن‌ها را پاک می‌کند و فقط آن‌هایی را که تغییر می‌کنند ارزیابی می‌کند.

  • بنابراین، بسیار کارآمد است و در موردی که مثلاً اندازه شیء تغییر می‌کند، آن وابستگی تغییر می‌کند و باید آن را منعکس کند.

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

  • بنابراین، بیایید کمی آن ساعت را گسترش دهیم تا نشان دهیم که می‌توانیم چیزهای واقعی، چیزهای کمی واقعی بسازیم.

  • در این مورد، کاری که انجام می‌دهیم این است که چند علامت تیک به لبه‌ها اضافه می‌کنیم و چند حلقه for خواهید دید، بنابراین می‌توانید به‌نوعی حلقه for را در آن به‌صورت محلی و درست انجام دهید.

  • سپس، چند عقربه ساعت‌شمار و دقیقه‌شمار اضافه می‌کنیم، و بعد می‌رویم سراغ ثا-- ثانیه‌شمار را اضافه می‌کنیم، سپس با چند دکمه مختلف آن را تکمیل می‌کنیم تا کار تمام شود، و حالا یک ساعت زنده داریم.

  • می‌دانید، درواقع دارد زمان را نشان می‌دهد.

  • نکته جالب دیگر این است که می‌توانید همان چیز را در JSON بنویسید، و اگر در JSON بود، می‌توانید به‌راحتی با یک LLM تعامل داشته باشید و بگویید: «عقربه دقیقه را به سبز تغییر بده»، و او به‌نوعی متوجه می‌شود که منظور شما چیست.

  • بنابراین، این‌طوری خیلی خوب است.

  • بسیارخوب.

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

  • راست.

  • بنابراین، امیدواریم که این موضوع به شما درکی از قابلیت‌های Remote Compose بدهد.

  • اجازه دهید کمی درباره پشتیبانی توسعه‌دهنده‌ای که برای شما داریم صحبت کنم، موافقید؟

  • بنابراین، اشاره کردم که این‌ها عمدتاً کتابخانه‌های AndroidX هستند، بنابراین هر چیزی که در DAC است، می‌دانید کجا آن را پیدا کنید.

  • جدیدترین نسخه‌ها، اسناد، و همه این موارد را دریافت خواهید کرد.

  • طبق معمول، جان به ما نشان داد که در «استودیو Android» چه کارهایی می‌توانیم انجام دهیم.

  • به‌نظرم جالب‌ترین چیز برای من واقعاً پیش‌نمایش زنده است که واقعاً زمان توسعه را تسریع می‌کند.

  • یکی از چیزهایی که روی آن کار می‌کنیم، یک نوع مشخصات باز عمومی واقعی برای این قالب است، درست است؟

  • ما سعی نمی‌کنیم چیزی را کاملاً پنهان کنیم، آن چیز در آنجا وجود دارد.

  • می‌توانید ببینید که چگونه کار می‌کند، چگونه ساخته شده و کدگذاری شده است.

  • یکی از چیزهای رایجی که در برنامه‌هایتان استفاده می‌کنید، ترسیمی‌های بُرداری پویانمایی‌شده است و، می‌دانید، این خیلی راحت است.

  • و آنچه را درباره نگاشت‌های بیتی گفتم به‌خاطر داشته باشید.

  • ما خیلی علاقه‌مندیم که شما بردارها را ارسال کنید و نه نقشه‌های بیتی، درست است؟

  • بنابراین درحال ساختن چند ابزار هستیم تا به شما کمک کنیم مثلاً یک Lottie یا احتمالاً قالب دیگری را بگیرید و آن را به مؤلفه RemoteCompose تبدیل کنید که بتوانید در فایل RemoteCompose خود استفاده کنید.

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

  • و در مورد ما، این یک سند است.

  • بنابراین، در اینجا یک نگاه اجمالی سریع، پیش‌نمایشی از ابزاری که روی آن کار می‌کنیم، ارائه شده است.

  • این یک بازرس سند RemoteCompose است و به شما امکان می‌دهد اسناد را همان‌طور که از نامش پیداست بازرسی کنید و چندین ابزار مفید و تجسم را روی آن اعمال کنید.

  • یکی از نمونه‌های خوب این است که می‌توانید سندی را باز کنید و عملیات مختلفی را که در سند وجود دارد گام‌به‌گام اجرا کنید تا بهتر متوجه شوید که چگونه همه چیز به هم مرتبط است.

  • اما ابزارهای بیشتری داریم.

  • برای مثال، من واقعاً این یکی را دوست دارم که فوراً سند شما را در تراکم‌ها و اندازه‌های مختلف تجسم می‌کند، بنابراین می‌توانید خیلی سریع ببینید که آیا آنچه می‌سازید به‌خوبی با تغییرات مختلف در اندازه‌ها سازگار می‌شود یا نه.

  • یکی از جدیدترین چیزهایی که روی آن کار می‌کنیم، یک بازرس چیدمان کاملاً پیشرفته است، بنابراین، نوع قابلیت‌های بازرسی چیدمان که در Android Studio به آن عادت کرده‌اید، اما در اینجا، برای عملیات و اسناد اعمال می‌شود، درست است؟

  • و می‌توانیم ازنظر سه‌بعدی حتی فراتر برویم.

  • قبلاً اشاره کردم و امیدوارم تا الان شما را متقاعد کرده باشم که کوچک بودن یک ویژگی است.

  • مهم است.

  • ما واقعاً اسناد کوچک می‌خواهیم.

  • این کار به همه کمک می‌کند.

  • لطفاً این کار را انجام دهید.

  • خب، برای این کار چه می‌توانیم بکنیم؟

  • بیایید یک مثال رایج از میانای کاربر را درنظر بگیریم، درست است؟

  • چیزی که در آن چند ردیف داشته باشید.

  • خود ردیف‌ها، می‌دانید، یک نام، یک نمودار کوچک، و شاید یک دکمه دارند.

  • خیلی معمولی.

  • اندازه آن واسط کاربر درحال‌حاضر بسیار کوچک است.

  • درباره حدود ۲۵ کیلوبایت صحبت می‌کنیم، اما عملکردهای مختلفی در RemoteCompose داریم که به شما کمک می‌کند آن را حتی کوچک‌تر کنید.

  • پس بیایید آن‌ها را بررسی کنیم.

  • اولین کاری که می‌کنیم و این یکی رایگان است، ما این کار را برای شما انجام می‌دهیم، اگر رشته‌های یکسانی ارسال کنید، متوجه می‌شویم.

  • با اشاره به همان رشته می‌توانیم چند بایت را حذف کنیم.

  • اما ما چیزهای بیشتری مثل حلقه‌ها را ارائه می‌دهیم.

  • بنابراین در اینجا، من از این عملیات حلقه برای رسم نمودار کوچک خود استفاده کردم، درست است؟

  • و این کار چند بایت دیگر را ذخیره می‌کند.

  • ما توابع هم داریم.

  • بنابراین، می‌توانید تابعی ایجاد کنید، و در اینجا، من دوباره این کار را برای آن نمودار انجام می‌دهم، و سپس می‌توانم به‌سادگی آن نمودار را چندین بار فراخوانی کنم.

  • و باز هم، این کار باعث صرفه‌جویی در چند بایت می‌شود.

  • و برای مؤلفه، الگو داریم، درست است؟

  • ایده‌های مشابهی برای توابع، اما بیشتر برای مؤلفه، درست است؟

  • بنابراین، می‌توانم همه آن مؤلفه‌های مختلف، همه آن ردیف‌های مختلف را به‌سادگی با فراخوانی آن الگو با پارامترهای صحیح جایگزین کنم و این کار باعث صرفه‌جویی زیادی در سند می‌شود.

  • و آخرین چیزی که به‌طور پیش‌فرض پشتیبانی می‌کنیم فشرده‌سازی سند است.

  • به‌طور کلی، با این روش می‌توانید حدود نیمی از اندازه سند را ذخیره کنید.

  • یک نکته جالب این است که سرصفحه سند کمی خاص است.

  • آن را فشرده نمی‌کنیم.

  • این ویژگی زمانی بسیار مفید است که می‌خواهید به‌سرعت تعداد زیادی سند را بدون نیاز به خارج کردن آن‌ها از حالت فشرده بررسی کنید.

  • بنابراین، نکته اصلی این است که اسناد به‌طور پیش‌فرض کوچک هستند، اما می‌توانید آن‌ها را بسیار کوچک‌تر هم بکنید.

  • و با این مثال کوچک می‌توانید ببینید که چقدر آسان است که آن را به معنای واقعی کلمه به اندازه یک مرتبه بزرگی کاهش دهیم، زیرا کوچک بودن یک ویژگی است.

‫Remote Compose در ابزاره‌ها و Wear OS

  • درباره ابزارک‌ها و به‌طور خاص ابزارک‌های راه‌انداز در پلاتفرم Android صحبت کردم.

  • پس بیایید کمی درباره کاری که انجام می‌دهیم و آنچه درحال‌حاضر وجود دارد صحبت کنیم.

  • بنابراین اولین کاری که می‌توانیم انجام دهیم این است که یک ابزاره موجود، مانند آن ساعت، را صرفاً در RemoteCompose تکرار کنیم و اساساً همان رفتار را داشته باشد، فقط در RemoteCompose.

  • اما می‌توانیم کارهای بیشتری انجام دهیم، درست است؟

  • بنابراین اگر می‌خواهید واسط کاربر تطبیقی‌تر، ابزارهایی که اندازه آن‌ها تغییر می‌کند و به‌درستی پویانمایی می‌شوند داشته باشید، اکنون می‌توانیم این کار را انجام دهیم، درست است؟

  • چون ما اصول اولیه مناسب را برای انجام این کار دراختیار داریم، برخلاف آنچه شما می‌توانید با نماهای ازراه‌دور انجام دهید.

  • ما اساساً انعطاف‌پذیری و قدرت بسیار بیشتری به شما می‌دهیم.

  • و وقتی صحبت از قدرت می‌شود، این یک مثال سریع از کارهای دیوانه‌واری است که می‌توانید انجام دهید، درست است؟

  • این ابزاره بازی کامل را به شما نشان می‌دهد.

  • و من به اندازه واقعی آن ابزاره اشاره می‌کنم.

  • درباره ۴ کیلوبایت صحبت می‌کنیم.

  • اشاره کردم که انتقال چیزی نیست که مستقیماً در Remote Compose با آن سروکار داشته باشیم.

  • اگرچه به‌طور خاص برای ابزاره‌ها، ما یک کلاس اتصال‌دهنده «ابزاره RemoteCompose» ارائه می‌دهیم که به شما امکان می‌دهد به‌راحتی یک سند را بگیرید و آن را به راه‌انداز ارسال کنید.

  • بااین‌حال، اگر ازقبل ابزارهایی دارید، توصیه می‌کنیم همچنان از Glance استفاده کنید، زیرا جدیدترین نسخه Glance به‌طور خودکار یک پس‌زمینه برای انتشار Remote Compose در پلاتفرم ارائه می‌دهد.

  • و حالا، درباره Wear OS صحبت می‌کنیم.

  • متشکرم، نیکو.

  • چه خبر، بچه‌ها؟

  • من جان زولر هستم.

  • من اینجا هستم تا درباره Wear OS با شما صحبت کنم.

  • حدود ۳۰ جوک برای این ارائه نوشتم، اما همه آن‌ها را برای مادرم تعریف کردم و او گفت اگر هرکدام از آن‌ها را بگویم اخراج می‌شوم.

  • بنابراین، من از آن صرف‌نظر می‌کنم و فقط ارائه را انجام می‌دهم.

  • بنابراین، بیایید درباره Remote Compose و برخی‌از مزایای عالی آن در Wear OS صحبت کنیم.

  • ابتدا می‌خواهیم درباره «ردیاب تمرین» جدید Wear OS صحبت کنیم.

  • اکنون، ما از Remote Compose برای ساخت این استفاده کردیم، و می‌دانیم که ساختن یک ردیاب تمرین با ویژگی‌های کامل و کیفیت بالا برای Wear واقعاً دشوار است.

  • این کار مدتی طول می‌کشد.

  • بنابراین، ما این کار را برای شما انجام دادیم و برخی ویژگی‌های جدید و مدرن تمرین ورزشی را اضافه کردیم، مانند سنجه‌های زنده و امکان کنترل رسانه.

  • و به‌لطف Remote Compose، توانستیم رابط کاربری را از همه اجراها جدا کنیم، بنابراین می‌تواند بسیار کارآمد اجرا شود و به خالی نشدن باتری کاربران کمک می‌کند.

  • بدون Remote Compose، اگر این کار را فقط با Compose معمولی انجام می‌دادیم، نمی‌توانستیم سنجه‌های زنده را به‌صورت ثانیه‌به‌ثانیه در صفحه بازآوری کنیم.

  • درواقع یک دقیقه طول می‌کشد، چون باید ساعت را در حالت محیطی بیدار کنید تا فقط یک سنجه را نشان دهد.

  • بنابراین، این یک مزیت بزرگ است.

  • و درواقع، باور کنید یا نه، این یک GIF است.

  • این تصویر نیست.

  • می‌دانم که هنوز تغییری نکرده است، و حدود ۴۵ ثانیه دیگر وقتی به به‌روزرسانی سنجه بعدی برسیم تغییر خواهد کرد.

  • اما این مزیت Remote Compose است.

  • و حدس بزنید چه شد؟

  • درواقع دردسترس است، Wear Workout Tracker دردسترس است.

  • برنامه ASICS Runkeeper برنامه جدید خود را با آن ساخته است و می‌توانید با دنبال کردن این پیوند و پیوستن به آزمایش بتای باز آن‌ها، امروز آن را امتحان کنید.

  • مورد بعدی، «ابزاره‌های Wear OS» است.

  • این نمونه عالی دیگری از «ترکیب از راه دور» در عمل است.

  • این‌ها جایگزین کتابخانه قدیمی ProtoLayout Tiles می‌شوند، بنابراین دیگر نیازی به پشتیبانی از دو نوع مختلف چارچوب واسط کاربر برای دستگاه‌های مختلف ندارید.

  • با «نوشتن از راه دور» می‌توانید همه این کارها را انجام دهید.

  • و چون ابزارک‌ها در Wear OS بخشی از Jetpack Glance هستند، بخشی از بوم‌سازگان Android یکپارچه ابزارک‌ها نیز محسوب می‌شوند.

  • بسیار خوب، و به‌عنوان بخشی از این بوم‌سازگان، واسط کاربر ابزاره‌های RemoteCompose کاملاً از هر فرایند برنامه خاصی جدا شده‌اند، بنابراین می‌توان آن‌ها را به‌طور ایمن بااستفاده از همان فناوری بقیه پشته Android در دستگاه‌های Wear OS سریال‌سازی و رندر کرد.

  • ‫Remote Compose همچنین گرافیک‌های مدرن و چیدمان‌های واکنش‌گرا را به ابزارهایی اضافه می‌کند که بسیار کارآمد هستند و مصرف باتری کمی دارند.

  • و با Wear OS 7، سازندگان سخت‌افزار ازقبل درحال استفاده از سینی‌های پیمایش عمودی هستند.

  • این Samsung Galaxy Watch است و می‌توانید ببینید که ابزاره‌ها چگونه به‌صورت عمودی در سینی‌ها پیمایش می‌شوند.

  • اگر می‌خواهید درباره انتقال کاشی به ابزاره بیشتر بدانید، می‌توانید این پیوند را بررسی کنید.

  • در دستگاه‌های قدیمی‌تر که برای کاشی‌ها به گردونه‌های افقی متکی هستند، ابزاره‌ها به‌طور خودکار به‌عنوان کاشی تمام‌صفحه نمایش داده می‌شوند.

  • و همچنین، کاملاً با Wear OS 4 سازگار با نسخه قدیمی هستند.

  • و همچنین، این پیوند اطلاعات بیشتری درباره سازگاری با نسخه قدیمی به شما می‌دهد.

  • و چند شریک دیگر هم داریم که ازقبل از ابزاره‌ها استفاده می‌کنند.

  • می‌توانید نگاهی بیندازید.

  • و این هم از من.

  • بله، برگردیم به شما نیکو.

  • متشکریم.

مراحل بعدی و جمع‌بندی

  • بسیار خوب.

  • بنابراین، این موضوع صحبت ما را پوشش می‌دهد.

  • برخی‌از قابلیت‌های «نوشتن از راه دور» را بررسی کردیم.

  • چند مورد دیگر هم هست که درباره‌شان صحبت نکردیم.

  • چارچوب بسیار غنی‌ای است.

  • توصیه می‌کنم به اسناد موجود و اسناد آتی نگاهی بیندازید.

  • می‌توانم بگویم هدف ما واقعاً ساختن آینده‌ای است که در آن بتوانید واقعاً از Remote Compose برای رسیدگی به همه آن سطوح دور استفاده کنید.

  • و برخی‌از آن‌ها را دیدید، درست است، مثل Wear، ابزاره‌ها.

  • اما چیزهای بیشتری در راه است.

  • همچنین می‌گویم که این پروژه‌ای درحال انجام است.

  • این ویژگی درحال توسعه است.

  • ما، می‌دانید، همه این‌ها را به‌صورت عمومی توسعه می‌دهیم.

  • می‌توانید ببینید چه کاری انجام می‌دهیم.

  • اما، من می‌گویم، ما واقعاً می‌خواهیم از توسعه‌دهندگان بشنویم، درست است؟

  • درحال ساختن آن برای شما هستیم.

  • بنابراین، اگر ایده‌های دیگری دارید، چیزهایی که ازدست داده‌اید، با ما صحبت کنید.

  • بسیار خوشحال می‌شویم که از شما بشنویم.

  • من این را با این تمام می‌کنم، کل ارائه‌ای که دیدید، مشخصاً، در Remote Compose انجام شده است، ازجمله پویانمایی‌ها.