Jetpack compose 更新到 1.0.0-rc01 后无法预览

Kar*_*ouh 55 android android-jetpack-compose

仅当我更新到 1.0.0-rc01 时才发生这种情况。它说:

找不到以下类:- androidx.compose.ui.tooling.preview.ComposeViewAdapter(修复构建路径、编辑 XML、创建类)

在此处输入图片说明

我的代码:

@Composable
@Preview
fun CenterProgress(){
    Box(
        modifier= Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ){
        CircularProgressIndicator(strokeWidth = 3.dp)
    }
}
Run Code Online (Sandbox Code Playgroud)

Ang*_*Koh 73

就我而言,这是因为我将构建变体保留在“发布”状态。将其更改回“调试”修复了丢失的类错误。

在此输入图像描述

预览功能可能来自 build.gradle 中的以下行

debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
Run Code Online (Sandbox Code Playgroud)

  • 在我浪费时间摆弄依赖版本之后,这也对我有用。 (2认同)

Mat*_*Pag 55

2021 年 7月 20 日更新: 只需下载并使用最新的AS ArcticFox RC1即可解决问题


他们在 rc01 中拆分了一些包,但根据 @CommonsWare 评论(所有功劳都归功于他),似乎 Android Studio 版本本身存在问题。您有 2 个选择:

  1. 降级到 beta09 直到 AS ArcticFox RC1 出来
  2. 尝试建议的解决方法,使用 AS Arctic Fox Beta 5 将所有组合依赖项保留到1.0.0-rc01版本并仅降级ui-tooling1.0.0-beta09(由评论确认)。

额外的细节

在这里你可以找到他们在1.0.0-rc01 https://android-review.googlesource.com/c/platform/frameworks/support/+/1739498 中移动的所有类,以及关于为什么决定这样做的解释。

简而言之,您现在可以针对某些特定的优化场景(这不应该是默认情况)执行此操作:

debugImplementation "androidx.compose.ui:ui-tooling:1.0.0-rc01"
implementation "androidx.compose.ui:ui-tooling-preview:1.0.0-rc01"
Run Code Online (Sandbox Code Playgroud)

  • Android Studio Artic Fox (2020.3.1) Beta 5 - 2021 年 7 月 2 日。对我来说,它解决了问题,将所有撰写依赖项保留为 1.0.0-rc01 版本,仅将 ui-tooling 降级到 1.0.0-beta09。 (7认同)
  • 我尝试了一下,得到了 Cannot access 'ComposeViewAdapter': it is inside in 'androidx.compose.ui.tooling' (2认同)
  • 在我的情况下仍然不起作用!! (2认同)

Chi*_*mar 30

我也遇到了与以下库依赖项相同的问题

implementation "androidx.compose.ui:ui-tooling-preview:1.3.3"
Run Code Online (Sandbox Code Playgroud)

然后我删除了预览库并使用了它的根库,它为我生成了预览。

现在我在我的项目中使用以下依赖项。

implementation "androidx.compose.ui:ui-tooling:1.3.3"
Run Code Online (Sandbox Code Playgroud)

我说的是截至 2023 年 2 月


Rob*_*sse 21

更新Android Studio Bumblebee不再需要此功能| 2021.1.1 Canary 6Android Gradle 插件 7.1.0-alpha06。注意:Canary 4 已经修复了这个问题,但需要一个损坏的 AGP 版本。现在也解决了这个问题。

除了上述答案:这里是如何在 gradle 中强制使用 ui-tooling 版本:

implementation("androidx.compose.ui:ui-tooling:$compose_version") {
    version {
        // TODO: Remove this when Android Studio has become compatible again
        // Android Studio Bumblebee | 2021.1.1 Canary 3 is not compatible with module ui-tooling 1.0.0-rc01 or higher.
        // The Run Configuration for Composable Previews that Android Studio makes expects a PreviewActivity class
        // in the `androidx.compose.ui.tooling.preview` package, but it was moved in 1.0.0-rc01, and thus causes error:
        // "androidx.compose.ui.tooling.preview.PreviewActivity is not an Activity subclass or alias".
        // For more, see: https://stackoverflow.com/questions/68224361/jetpack-compose-cant-preview-after-updating-to-1-0-0-rc01
        strictly("1.0.0-beta09")
    }
}

Run Code Online (Sandbox Code Playgroud)