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

Jetpack Compose预览无法渲染,请求排查解决方法

问题:Jetpack Compose预览无法渲染,报PoolingContainer类未找到异常

从昨天起所有Jetpack Compose预览均无法渲染,点击预览旁的信息图标,得到如下堆栈跟踪:

Failed to instantiate one or more classes
The following classes could not be instantiated:
     -androidx.compose.ui.tooling.ComposeViewAdapter(Open Class, Show Exception, Clear Cache)

if this is an unexpected error you can also try to build the project, then manually refresh the layout

java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer
    at androidx.compose.ui.platform.ViewCompositionStrategy$DisposeOnDetachedFromWindowIfNotInPoolingContainer.installFor(ViewCompositionStrategy.android.kt:97)
    at androidx.compose.ui.platform.AbstractComposeView.<init>(ComposeView.android.kt:123)
    at androidx.compose.ui.platform.ComposeView.<init>(ComposeView.android.kt:392)
    at androidx.compose.ui.platform.ComposeView.<init>(ComposeView.android.kt:388)
    at androidx.compose.ui.tooling.ComposeViewAdapter.<init>(ComposeViewAdapter.kt:131)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:339)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:176)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:136)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:301)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:417)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:428)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:332)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:663)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:505)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:363)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:436)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:121)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:739)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$8(RenderTask.java:895)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:187)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)

当前环境:

  • Android Studio Giraffe(2022.3.1)
  • Jetpack Compose BOM版本 2023.06.01
  • 近一周未修改构建文件、未更新Android Studio或SDK工具
  • 已尝试清理重建项目、清除AS缓存,无效

询问:该类为何会从类路径中消失,该如何解决?


解决方案

1. 显式添加PoolingContainer依赖

在app模块的build.gradle或build.gradle.kts中添加依赖,确保类被引入类路径:

dependencies {
    // 对应Compose BOM 2023.06.01的兼容版本为1.0.0
    implementation "androidx.customview:customview-poolingcontainer:1.0.0"
}

添加后同步项目并重新构建。

2. 强制统一依赖版本解决冲突

若存在依赖版本冲突,在项目根目录的build.gradle或app模块中强制指定版本:

configurations.all {
    resolutionStrategy {
        force "androidx.customview:customview-poolingcontainer:1.0.0"
        force "androidx.customview:customview:1.2.0" // 关联基础库版本,与Compose BOM匹配
    }
}

3. 彻底清理Gradle缓存

执行以下命令清除Gradle的构建缓存和项目构建文件:

./gradlew cleanBuildCache
./gradlew clean

完成后重新同步项目并构建。

4. 检查并修复本地SDK依赖

  • 打开Android Studio的SDK Manager,进入Android SDK > SDK Tools
  • 确认Android SDK Build-Tools、Android SDK Platform-Tools为对应版本,若异常可尝试重新安装
  • 检查本地SDK目录下extras/android/m2repository/androidx/customview路径,若依赖文件损坏,手动删除该目录后重新同步项目

5. 重置Gradle在线依赖拉取

  • 打开File > Settings > Build, Execution, Deployment > Gradle
  • 勾选Offline work,点击Sync Now
  • 同步完成后取消勾选Offline work,再次点击Sync Now,强制拉取最新依赖缓存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:11:02