הפעלה וניפוי באגים של משבצת

האריחים הם לא אפליקציות, ולכן הם נפרסים ומופעלים באמצעות מנגנונים שונים. כשאפשרויות למפתחים מופעלות במכשיר (התכונות האלה מופעלות כברירת מחדל באמולטורים), תכונות נוספות לתמיכה בפיתוח של רכיבים מוצגים הופכות זמינות לשימוש גם ב-Android Studio וגם ב-adb.

פריסת כרטיסי מידע

כדי לפרוס את ה-Tile, אפשר להתקין את האפליקציה במכשיר פיזי או באמולטור באמצעות Android Studio, כמו שמתואר במאמר Build and run your app. לאחר מכן, פועלים לפי אותם השלבים שמשתמשים רגילים מבצעים כדי להוסיף את ה-Tile לגלריית ה-Tiles.

במהלך פיתוח פעיל, יכול להיות שיהיה לכם קל ומהיר יותר להשתמש בתכונה "Wear OS Tile" Run/Debug Configuration של Android Studio. בשיטה הזו, הריבוע נפרס ומופעל באופן אוטומטי, כך שאפשר להתחיל להשתמש בו מיד בלי לבצע פעולות ידניות נוספות.

יצירת הגדרה באופן אוטומטי

הדרך הכי קלה לפרוס ולהפעיל משבצת היא באמצעות הסמל 'הפעלת שירות' בשוליים. אם הגדרת ההרצה לא קיימת, היא נוצרת באופן אוטומטי. מידע נוסף זמין במאמר בנושא הגדרות הרצה/ניפוי באגים ב-Wear OS.

צילום מסך עם חץ אדום שמצביע על הסמל '▷' בשוליים
לוחצים על הסמל ▷ ב-gutter
צילום מסך עם חץ אדום שמצביע על התפריט הנפתח של הגדרות ההפעלה, ואפשרות ההגדרה TestTileService שמודגשת באדום
נוצרת באופן אוטומטי 'הגדרת הרצה'

יצירת הגדרה באופן ידני

אם ההגדרה האוטומטית לא פועלת, או אם אתם רוצים יותר שליטה על התוצאה, אפשר להיעזר בהוראות הבאות. צילומי המסך הם מ-Android Studio Meerkat (2024.3.1).

  1. בוחרים באפשרות '⋮' ('המבורגר') מסרגל הכותרת.

    צילום מסך עם חץ אדום שמצביע על האפשרות '⋮' (תפריט המבורגר) מסרגל הכותרת.
  2. בוחרים באפשרות 'עריכה…'.

    האפשרות 'עריכה…' היא הראשונה בקטע 'הגדרה' בתפריט הנפתח.
  3. לוחצים על '+' כדי להוסיף הגדרה בתיבת הדו-שיח שמופיעה.

    צילום מסך עם חץ אדום שמצביע על '+'.
  4. בוחרים באפשרות 'Wear OS Tile' (משבצת ב-Wear OS) כסוג ההגדרה החדשה.

    צילום מסך עם חץ אדום שמצביע על אפשרות ההגדרה 'Wear OS Tile'.
  5. מזינים שם להגדרה ובוחרים את המודול והאריח הרלוונטיים.

    צילום מסך עם שלוש חצים אדומים שמצביעים על אזורים בחלון הדו-שיח.
  6. מקישים על 'אישור'. ההגדרה שלכם תופיע בסרגל הכותרת. מקישים על הלחצן "▷" ("הפעלה") והאריח ייפרס ויופעל.

תצוגה מקדימה של כרטיסי מידע ב-Android Studio

החל מ-Android Studio Koala Feature Drop, אפשר לראות תמונות מצב של כרטיסי המידע של אפליקציית Wear OS. החלונית הזו שימושית במיוחד אם המראה של המשבצת משתנה בתגובה לתנאים, למשל תוכן שונה בהתאם לגודל המסך של המכשיר, או אירוע ספורט שמגיע להפסקה בין המחציות.

השמות של הקבוצות בחלונית התצוגה המקדימה זהים לשם הקבוצה שצוין בהערה של התצוגה המקדימה
חלונית התצוגה המקדימה של הריבועים ב-Android Studio.

הוספת יחסי תלות

מוסיפים את יחסי התלות הבאים לקובץ build.gradle.kts או build.gradle של האפליקציה:

dependencies {
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.6.0-beta01")
    debugImplementation("androidx.wear.tiles:tiles-tooling:1.6.0-beta01")
    implementation("androidx.wear:wear-tooling-preview:1.0.0")
}

הגדרת תצוגה מקדימה של אריחים

כדי לראות תצוגה מקדימה של מראה הרכיב בגדלים שונים של מסכי Wear OS, מוסיפים את ההערה @Preview ומעבירים את הפרמטר device. שימו לב שההערה @Preview הזו היא מחבילה שונה מזו שבה אתם משתמשים עבור תצוגות מקדימות של קומפוזיציות.

@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData { request ->
    TilePreviewHelper.singleTimelineEntryTileBuilder(
        buildMyTileLayout(context, request.deviceConfiguration)
    ).build()
}

הוספה ורישום של משאבים

אם ה-Tile משתמש במשאבים של Android, צריך לרשום אותם בפרמטר onTileResourceRequest של TilePreviewData, כמו שמוצג בקטע הקוד הבא:

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithResources(context: Context) = TilePreviewData(
    onTileResourceRequest = { request ->
        Resources.Builder()
            .setVersion(RESOURCES_VERSION)
            .addIdToImageMapping(
                myImageId,
                getImageById(R.drawable.animated_walk)
            )
            .build()
    },
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout(context, request.deviceConfiguration)
        ).build()
    }
)

הצגת ערכים ספציפיים ממקורות נתונים של פלטפורמות

אם הרכיב הגרפי משתמש בנתוני פלטפורמה – כמו דופק, קלוריות, מרחק וצעדים – יוצגו בו ערכי ברירת המחדל.

כדי להציג ערך ספציפי, מגדירים את הפרמטר platformDataValues כשיוצרים את האובייקט TilePreviewData, כמו שמוצג בקטע הקוד הבא:

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithPlatformOverride(context: Context) = TilePreviewData(
    platformDataValues = PlatformDataValues.of(
        PlatformHealthSources.Keys.HEART_RATE_BPM,
        DynamicDataBuilders.DynamicDataValue.fromFloat(160f)
    ),
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayoutDynamic(context, request.deviceConfiguration)
        ).build()
    }
)

שינוי כרטיסי מידע באמצעות adb

אפשר להשתמש ב-adb כדי להתקין, להסיר ולהפעיל רכיבי Tile באופן פרוגרמטי במהלך הפיתוח.

בפקודות הבאות, ComponentName היא מחרוזת שמורכבת משם החבילה וממחלקה בתוך החבילה הזו, לדוגמה com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

מוסיפה משבצת שסופקה על ידי COMPONENT_NAME ומחזירה את האינדקס.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]

פלט לדוגמה:

Broadcast completed: result=1, data="Index=[0]"

אם משבצת כבר קיימת בקרוסלה, היא מוסרת ומוחזרת לאותו מיקום. אחרת, היא מוכנסת במיקום Index[0]. בנוסף, אם הקרוסלה מלאה, המשבצת האחרונה מוסרת כדי לפנות מקום למשבצת החדשה.

show-tile

הפעלת המשבצת באינדקס TILE_INDEX.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]

פלט לדוגמה:

Broadcast completed: result=1

remove-tile

הסרת כל המופעים של כרטיסי המידע בקרוסלה שמשויכים ל-COMPONENT_NAME.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]

פלט לדוגמה:

result=1, data="Tile(s) removed."

ערכים מוחזרים

  • result=0: אף מקלט שידור לא הגיב לפקודה הזו, כנראה בגלל שגרסת Wear OS ישנה מדי או שתהליך הניפוי באגים לא פועל.
  • result=1: הצלחה.
  • result>1: שגיאה.