نسخه سازی کاشی ها

در دستگاه‌های Wear OS، کاشی‌ها توسط دو جزء کلیدی با نسخه‌سازی مستقل ارائه می‌شوند. برای اطمینان از عملکرد صحیح کاشی های برنامه های شما در همه دستگاه ها، درک این معماری اساسی مهم است.

  • کتابخانه‌های مربوط به کاشی‌های Jetpack : این کتابخانه‌ها (از جمله Wear Tiles و Wear ProtoLayout) در برنامه شما تعبیه شده‌اند و شما به‌عنوان توسعه‌دهنده، نسخه‌های آنها را کنترل می‌کنید. برنامه شما از این کتابخانه ها برای ساختن یک شی TileBuilder.Tile (ساختار داده نشان دهنده Tile شما) در پاسخ به فراخوانی onTileRequest() سیستم استفاده می کند.
  • ProtoLayout Renderer: این جزء سیستم مسئول رندر کردن شی Tile در صفحه نمایش و مدیریت تعاملات کاربر است. نسخه رندر توسط توسعه‌دهنده برنامه کنترل نمی‌شود و می‌تواند در دستگاه‌های مختلف، حتی دستگاه‌هایی که سخت‌افزار یکسان دارند، متفاوت باشد.

ظاهر یا رفتار یک کاشی می تواند بر اساس نسخه های کتابخانه Jetpack Tiles برنامه شما و نسخه ProtoLayout Renderer در دستگاه کاربر متفاوت باشد. به عنوان مثال، ممکن است یک دستگاه از چرخش یا نمایش داده های ضربان قلب پشتیبانی کند و دیگری ممکن است نه.

این سند نحوه اطمینان از سازگاری برنامه شما با نسخه‌های مختلف کتابخانه Tiles و ProtoLayout Renderer و نحوه مهاجرت به نسخه‌های کتابخانه Jetpack بالاتر را توضیح می‌دهد.

سازگاری را در نظر بگیرید

برای ایجاد یک کاشی که در طیف وسیعی از دستگاه ها به درستی عمل می کند، باید موارد زیر را در نظر بگیرید.

نسخه رندر را شناسایی کنید

  • از متد getRendererSchemaVersion() از شی DeviceParameters که به متد ()onTileRequest شما ارسال شده است استفاده کنید. این روش شماره نسخه اصلی و فرعی ProtoLayout Renderer را بر روی دستگاه برمی گرداند.
  • سپس می‌توانید از منطق شرطی در پیاده‌سازی onTileRequest() برای تطبیق طرح یا رفتار Tile خود بر اساس نسخه رندر شناسایی‌شده استفاده کنید.
    • به عنوان مثال، اگر یک انیمیشن خاص پشتیبانی نمی شود، می توانید به جای آن یک تصویر ثابت نمایش دهید.

حاشیه نویسی @RequiresSchemaVersion

  • حاشیه نویسی @RequiresSchemaVersion در روش های ProtoLayout حداقل نسخه طرحواره رندر مورد نیاز برای رفتار آن روش را به صورت مستند نشان می دهد ( مثال ).
    • در حالی که فراخوانی روشی که به نسخه رندر بالاتری نسبت به موجود در دستگاه نیاز دارد، باعث از کار افتادن برنامه شما نمی شود، ممکن است منجر به نمایش داده نشدن محتوا یا نادیده گرفتن ویژگی شود.

مثال

override fun onTileRequest(
    requestParams: TileService.TileRequest
): ListenableFuture<Tile> {
    val rendererVersion =
        requestParams.deviceConfiguration.rendererSchemaVersion
    val tile = Tile.Builder()

    if (
        rendererVersion.major > 1 ||
            (rendererVersion.major == 1 && rendererVersion.minor >= 300)
    ) {
        // Use a feature supported in renderer version 1.300 or later
        tile.setTileTimeline(/* ... */ )
    } else {
        // Provide fallback content for older renderers
        tile.setTileTimeline(/* ... */ )
    }

    return Futures.immediateFuture(tile.build())
}

تست با نسخه های مختلف رندر

برای آزمایش کاشی‌های خود در برابر نسخه‌های مختلف رندر، آنها را در نسخه‌های مختلف شبیه‌ساز Wear OS مستقر کنید. (در دستگاه‌های فیزیکی، به‌روزرسانی‌های ProtoLayout Renderer توسط Play Store یا به‌روزرسانی‌های سیستم ارائه می‌شوند. نمی‌توان یک نسخه رندر خاص را مجبور کرد نصب شود.)

ویژگی پیش‌نمایش کاشی اندروید استودیو از یک رندر تعبیه‌شده در کتابخانه Jetpack ProtoLayout که کد شما به آن وابسته است استفاده می‌کند، بنابراین رویکرد دیگر این است که هنگام آزمایش کاشی‌ها به نسخه‌های مختلف کتابخانه Jetpack وابسته باشید.

کتابخانه های Jetpack را ارتقا دهید

کتابخانه‌های Jetpack Tile خود را به‌روزرسانی کنید تا از آخرین پیشرفت‌ها، از جمله تغییرات UI برای ادغام یکپارچه کاشی‌ها با سیستم، استفاده کنید.

به Tiles 1.2 / ProtoLayout 1.0 مهاجرت کنید

از نسخه 1.2، بیشتر APIهای طرح بندی کاشی ها در فضای نام androidx.wear.protolayout قرار دارند. برای استفاده از آخرین APIها، مراحل انتقال زیر را در کد خود تکمیل کنید.

به روز رسانی وابستگی ها

در فایل ساخت ماژول برنامه، تغییرات زیر را اعمال کنید:

شیار

  // Remove
  implementation 'androidx.wear.tiles:tiles-material:version'

  // Include additional dependencies
  implementation "androidx.wear.protolayout:protolayout:1.2.1"
  implementation "androidx.wear.protolayout:protolayout-material:1.2.1"
  implementation "androidx.wear.protolayout:protolayout-expression:1.2.1"

  // Update
  implementation "androidx.wear.tiles:tiles:1.4.1"

کاتلین

  // Remove
  implementation("androidx.wear.tiles:tiles-material:version")

  // Include additional dependencies
  implementation("androidx.wear.protolayout:protolayout:1.2.1")
  implementation("androidx.wear.protolayout:protolayout-material:1.2.1")
  implementation("androidx.wear.protolayout:protolayout-expression:1.2.1")

  // Update
  implementation("androidx.wear.tiles:tiles:1.4.1")

فضاهای نام را به روز کنید

در فایل های کد مبتنی بر Kotlin و جاوا برنامه خود، به روز رسانی های زیر را انجام دهید. از طرف دیگر، می توانید این اسکریپت تغییر نام فضای نام را اجرا کنید.

  1. همه واردات androidx.wear.tiles.material.* را با androidx.wear.protolayout.material.* جایگزین کنید. این مرحله را برای کتابخانه androidx.wear.tiles.material.layouts نیز تکمیل کنید.
  2. جایگزین بسیاری از واردات androidx.wear.tiles.* با androidx.wear.protolayout.* .

    واردات برای androidx.wear.tiles.EventBuilders ، androidx.wear.tiles.RequestBuilders ، androidx.wear.tiles.TileBuilders ، و androidx.wear.tiles.TileService باید ثابت بماند.

  3. تغییر نام چند روش منسوخ شده از کلاس های TileService و TileBuilder:

    1. TileBuilders : getTimeline() به getTileTimeline() و setTimeline() به setTileTimeline()
    2. TileService : onResourcesRequest() به onTileResourcesRequest()
    3. RequestBuilders.TileRequest : getDeviceParameters() به getDeviceConfiguration() ، setDeviceParameters() به setDeviceConfiguration() ، getState() به getCurrentState() و setState() به setCurrentState()
{% کلمه به کلمه %} {% آخر کلمه %}