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

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

פריסת משבצות

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

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

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

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

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

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

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

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

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

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

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

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

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

תצוגה מקדימה של משבצות ב-Android Studio

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

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

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

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

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

הגדרת תצוגות מקדימות של משבצות

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

import androidx.wear.tiles.tooling.preview.Preview

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

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

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

import androidx.wear.tiles.tooling.preview.Preview

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

fun getImageById(
    @DrawableRes id: Int,
): ImageResource =
    ImageResource.Builder()
        .setAndroidResourceByResId(
            AndroidImageResourceByResId.Builder()
                .setResourceId(id)
                .build(),
        )
        .build()

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

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

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

import androidx.wear.tiles.tooling.preview.Preview

@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(
            buildMyTileLayout()
        ).build()
    }
)

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

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

בפקודות הבאות, 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: שגיאה.