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

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

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

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

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

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

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

צילום מסך עם חץ אדום שמצביע על הסמל '▷' בשוליים
לוחצים על '‎▷' במרווח
צילום מסך עם חץ אדום שמצביע על התפריט הנפתח של הגדרת ההרצה, ואפשרות ההגדרה 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. החלונית הזו שימושית במיוחד אם המראה של המשבצת משתנה בתגובה לתנאים, למשל תוכן שונה בהתאם לגודל המסך של המכשיר, או אירוע ספורט שמגיע להפסקה בין המחציות.

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

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

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

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

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

כדי לראות תצוגה מקדימה של מראה ה-Tile בגדלים שונים של מסכים ב-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 כדי להתקין, להסיר ולהפעיל אריחים באופן פרוגרמטי במהלך הפיתוח.

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