Kart çalıştırma ve hata ayıklama

Kartlar uygulama olmadığından farklı mekanizmalar kullanılarak dağıtılır ve başlatılır. Bir cihazda geliştirici seçenekleri etkinleştirildiğinde (emülatörlerde bu özellikler varsayılan olarak etkindir) kart geliştirmeyi destekleyen ek özellikler hem Android Studio hem de adb'te kullanılabilir hale gelir.

Kartları dağıtma

Kartınızı dağıtmak için Uygulamanızı oluşturma ve çalıştırma bölümünde açıklandığı gibi, Android Studio'yu kullanarak uygulamanızı fiziksel bir cihaza veya emülatöre yükleyebilirsiniz. Ardından, normal kullanıcılarla aynı adımları uygulayarak kartı kart bandına manuel olarak ekleyin.

Etkin geliştirme sırasında Android Studio'nun "Wear OS Kartı" Yapılandırma Çalıştırma/Hata Ayıklama özelliğini kullanmak daha kolay ve hızlı olabilir. Bu yöntem, kartınızı otomatik olarak dağıtır ve etkinleştirir. Böylece, ek manuel adımlar olmadan anında etkileşim kurabilirsiniz.

Yapılandırmayı otomatik olarak oluşturma

Kartları dağıtmanın ve çalıştırmanın en kolay yolu, kenar boşluğundaki "hizmeti çalıştır" simgesini kullanmaktır. Bu işlem, henüz mevcut değilse otomatik olarak bir çalıştırma yapılandırması oluşturur. Daha fazla bilgi için Wear OS çalıştırma/hata ayıklama yapılandırmaları başlıklı makaleyi inceleyin.

Boşlukta "▷" işaretini gösteren kırmızı ok içeren ekran görüntüsü
Kenar boşluğunda "▷"yi tıklayın
Çalıştırma yapılandırması açılır menüsünü işaret eden kırmızı oku ve "TestTileService" yapılandırma seçeneğini kırmızıyla ana hatlarıyla gösteren ekran görüntüsü
Otomatik olarak bir "çalıştırma yapılandırması" oluşturulur

Yapılandırmayı manuel olarak oluşturma

Otomatik yapılandırma işe yaramazsa veya sonuç üzerinde daha fazla kontrol sahibi olmak istiyorsanız aşağıdaki talimatları inceleyin. Ekran görüntüleri Android Studio Meerkat'ten (2024.3.1) alınmıştır.

  1. Başlık çubuğundan "⋮" ("hamburger") seçeneğini belirleyin.

    Başlık çubuğundaki "⋮" ("hamburger") seçeneğini gösteren kırmızı ok içeren ekran görüntüsü.
  2. "Düzenle…"yi seçin.

    "Düzenle…", açılır listenin Yapılandırma bölümündeki ilk seçenektir.
  3. Görünen iletişim kutusunda yapılandırma eklemek için "+" işaretini seçin.

    "+" işaretini gösteren kırmızı ok içeren ekran görüntüsü.
  4. Yeni yapılandırmanın türü olarak "Wear OS Kartı"nı seçin.

    "Wear OS Kartı" yapılandırma seçeneğini gösteren kırmızı ok içeren ekran görüntüsü.
  5. Yapılandırmanız için bir ad girin ve uygun modülü ve karoyu seçin.

    İletişim kutusunun alanlarını gösteren üç kırmızı ok içeren ekran görüntüsü.
  6. "Tamam"a dokunun. Yapılandırmanız başlık çubuğunda görünür. "▷" düğmesine tıklayın ("çalıştır") ve kartınız dağıtılıp etkinleştirilir.

Android Studio'da karoları önizleme

Android Studio Koala özellik paketinden itibaren Wear OS uygulamanızın kutularının anlık görüntülerini görüntüleyebilirsiniz. Bu panel, özellikle karo görünümünüz koşullara göre değişiyorsa (ör. cihazın ekran boyutuna bağlı olarak farklı içerikler veya bir spor etkinliğinin devre arası olması) kullanışlıdır.

Önizleme panelindeki grup adları, önizleme ekinde verilen grup adıyla eşleşiyor
Android Studio'daki Kartlar önizleme paneli.

Bağımlılıklar ekleme

Uygulamanızın build.gradle.kts veya build.gradle dosyasına aşağıdaki bağımlılıkları ekleyin:

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")
}

Kart önizlemelerini yapılandırma

Kartınızın farklı Wear OS ekran boyutlarındaki görünümünün önizlemesini görmek için @Preview ek açıklamasını ekleyin ve device parametresini iletin. Bu @Preview ek açıklamanın, birleştirilebilir önizlemeler için kullandığınızdan farklı bir paketten geldiğini unutmayın.

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()
    }
)

Kaynak ekleme ve kaydetme

Kartınızda Android kaynakları kullanılıyorsa bunları aşağıdaki kod snippet'inde gösterildiği gibi TilePreviewData parametresinin onTileResourceRequest parametresine kaydetmeniz gerekir:

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()

Platform veri kaynaklarından belirli değerleri gösterme

Kartınızda nabız, kalori, mesafe ve adım gibi platform verileri kullanılıyorsa kartta bu veriler için varsayılan değerler gösterilir.

Belirli bir değeri göstermek için TilePreviewData nesnesini oluştururken aşağıdaki kod snippet'inde gösterildiği gibi platformDataValues parametresini ayarlayın:

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'yi kullanarak kartları değiştirme

adb, geliştirme sırasında karoları programatik olarak yüklemek, kaldırmak ve etkinleştirmek için kullanılabilir.

Aşağıdaki komutlarda ComponentName, paket adından ve bu paket içindeki bir sınıftan (ör. com.example.wear.tiles/com.example.wear.tiles.PreviewTileService) oluşan bir dizedir.

add-tile

COMPONENT_NAME tarafından sağlanan bir karo ekler ve dizini döndürür.

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

Örnek çıkış:

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

Bantta zaten mevcut olan bir kart kaldırılır ve aynı konuma yeniden eklenir. Aksi takdirde Index[0] konumuna eklenir. Ayrıca, bant maksimum kapasitesindeyse yeni karoya yer açmak için son karo kaldırılır.

show-tile

TILE_INDEX dizinindeki karoyu etkinleştirin.

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

Örnek çıkış:

Broadcast completed: result=1

remove-tile

Banttaki COMPONENT_NAME ile ilişkili tüm kutu örneklerini kaldırır.

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

Örnek çıkış:

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

Döndürülen değerler

  • result=0: Büyük olasılıkla Wear OS sürümü çok eski olduğu veya hata ayıklama işlemi çalışmadığı için bu komuta hiçbir yayın alıcı yanıt vermedi.
  • result=1: Başarılı.
  • result>1: Hata.