You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Glance组件预览失败:无法实例化Composition Local

解决Jetpack Glance组件预览失败问题

问题根源

常规Compose的@Preview注解无法适配Glance组件的UI渲染需求。Glance使用专属的Composition Local和Applier系统,普通预览环境未初始化这些依赖,导致渲染时抛出Invalid applier异常。

解决步骤

1. 添加Glance预览依赖

在模块级别的build.gradle.kts(或build.gradle)中添加Glance预览库,确保版本与Glance核心库一致:

dependencies {
    // Glance核心库(版本需与你的项目保持一致)
    implementation "androidx.glance:glance-appwidget:1.0.0"
    // Glance预览专用库(仅Debug环境需要)
    debugImplementation "androidx.glance:glance-appwidget-preview:1.0.0"
}

2. 修改预览代码

替换普通的@Preview为Glance专属的@GlanceAppWidgetPreview注解,并确保预览函数包裹在GlanceTheme中:

package io.github.yamin8000.owl.ui.content.widget

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.glance.GlanceId
import androidx.glance.GlanceTheme
import androidx.glance.appwidget.GlanceAppWidget
import androidx.glance.appwidget.provideContent
import androidx.glance.appwidget.preview.GlanceAppWidgetPreview
import androidx.glance.text.Text

internal class Widget : GlanceAppWidget() {
    override suspend fun provideGlance(context: Context, id: GlanceId) {
        provideContent {
            GlanceTheme {
                WidgetContent()
            }
        }
    }

    @Composable
    fun WidgetContent() {
        Text("Some Text!")
    }
}

// Glance专用预览函数
@GlanceAppWidgetPreview
@Composable
fun WidgetPreview() {
    GlanceTheme {
        WidgetContent()
    }
}

验证

同步项目后,重新打开预览面板,即可正常渲染Glance组件的UI内容。

内容的提问来源于stack exchange,提问作者Yamin Siahmargooei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:00:10