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

升级Compose BOM至2024.01.00后CircularProgressIndicator报错求助

Compose BOM升级后CircularProgressIndicator报错问题

问题描述

将Compose BOM从2023.10.01版本升级至2024.01.00后,使用CircularProgressIndicator时出现方法找不到的错误。

错误堆栈跟踪

java.lang.NoSuchMethodError: No virtual method at(Ljava/lang/Object;I)Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; in class Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig; or its super classes (declaration of 'androidx.compose.animation.core.KeyframesSpec$KeyframesSpecConfig' appears in /data/app/~~UsXlPxBRrCk6Kgqqdu5UvA==/me.jerryokafor.ihenkiri.debug-c4yfK-gLz9ZQ8fKqIz3WEw==/base.apk)
  at androidx.compose.material3.ProgressIndicatorKt$CircularProgressIndicator$endAngle$1.invoke(ProgressIndicator.kt:371)
  at androidx.compose.material3.ProgressIndicatorKt$CircularProgressIndicator$endAngle$1.invoke(ProgressIndicator.kt:369)
  at androidx.compose.animation.core.AnimationSpecKt.keyframes(AnimationSpec.kt:649)
  at androidx.compose.material3.ProgressIndicatorKt.CircularProgressIndicator-LxG7B9w(ProgressIndicator.kt:369)
  at me.jerryokafor.feature.movies.screen.MoviesScreenKt$MoviesScreen$3.invoke(MoviesScreen.kt:275)
  at me.jerryokafor.feature.movies.screen.MoviesScreenKt$MoviesScreen$3.invoke(MoviesScreen.kt:178)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
  at me.jerryokafor.core.ui.components.BackgroundKt.Background(Background.kt:69)
  at me.jerryokafor.feature.movies.screen.MoviesScreenKt.MoviesScreen(MoviesScreen.kt:178)
  at me.jerryokafor.feature.movies.screen.MoviesScreenKt.MoviesScreen(MoviesScreen.kt:139)
  at me.jerryokafor.feature.movies.navigation.MoviesScreenKt$moviesScreen$1.invoke(MoviesScreen.kt:58)
  at me.jerryokafor.feature.movies.navigation.MoviesScreenKt$moviesScreen$1.invoke(MoviesScreen.kt:57)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
  at androidx.navigation.compose.NavHostKt$NavHost$14$1.invoke(NavHost.kt:308)
  at androidx.navigation.compose.NavHostKt$NavHost$14$1.invoke(NavHost.kt:306)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
  at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
  at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65)
  at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
  at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
  at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
  at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
  at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
  at androidx.navigation.compose.NavHostKt$NavHost$14.invoke(NavHost.kt:306)
  at androidx.navigation.compose.NavHostKt$NavHost$14.invoke(NavHost.kt:295)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:755)
  at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:744)

解决方法

  • 统一Compose依赖版本:所有Compose相关依赖(如material3、animation-core)都通过Compose BOM引入,不要手动指定版本,避免版本冲突。示例Gradle配置:
    dependencies {
        implementation platform('androidx.compose:compose-bom:2024.01.00')
        implementation 'androidx.compose.material3:material3'
        implementation 'androidx.compose.animation:animation-core'
        // 其他项目依赖...
    }
    
  • 清理并刷新依赖:执行以下命令清理项目缓存,强制Gradle重新拉取依赖:
    ./gradlew clean
    ./gradlew build --refresh-dependencies
    
  • 排查依赖冲突:用./gradlew dependencies查看项目依赖树,检查是否有第三方库依赖了旧版本的Compose Animation组件。如果有,通过exclude语句排除旧版本:
    implementation('第三方库坐标') {
        exclude group: 'androidx.compose.animation', module: 'animation-core'
    }
    
  • 升级到最新BOM版本:如果上述方法无效,尝试升级到更新的Compose BOM版本(如2024.02.00),该版本可能已修复此兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:51:05