Jetpack Compose中startRestartGroup方法缺失错误求助
Jetpack Compose + Coil 版本兼容错误修复
错误信息
No interface method startRestartGroup(ILjava/lang/String;)Landroidx/compose/runtime/Composer; in class Landroidx/compose/runtime/Composer; or its super classes (declaration of 'androidx.compose.runtime.Composer' .... at com.google.accompanist.coil.CoilImage__CoilKt.CoilImage(Coil.kt:324) at com.google.accompanist.coil.CoilImage.CoilImage(Coil.kt:1) at PokemonListScreenKt.PokedexEntry(PokemonListScreen.kt:172) at PokemonListScreenKt.PokedexRow(PokemonListScreen.kt:212) at PokemonListScreenKt$PokemonList$1$1.invoke(PokemonListScreen.kt:136) at PokemonListScreenKt$PokemonList$1$1.invoke(PokemonListScreen.kt:132)
问题根源
这个错误是Compose Compiler版本与Coil版本不兼容导致的。你当前使用的Compose Compiler是1.4.6,搭配的Compose BOM版本为2022.10.00,整体版本偏旧;而Coil 2.5.0需要更高版本的Compose Runtime支持,两者API不匹配就会抛出这个方法找不到的异常。
修复步骤
1. 升级Compose核心依赖版本
修改app/build.gradle中的配置,同步Compose Compiler和BOM版本:
android { // ...其他原有配置 composeOptions { // 升级到与BOM匹配的Compiler版本 kotlinCompilerExtensionVersion '1.5.3' } } dependencies { // 升级Compose BOM到兼容版本 implementation platform('androidx.compose:compose-bom:2023.08.00') // ...其他Compose依赖(ui、material3等)保持不变,由BOM统一管理版本 // 升级生命周期依赖到稳定版,移除beta版本 implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.2" // Coil 2.5.0无需更换,现在与升级后的Compose版本兼容 implementation "io.coil-kt:coil-compose:2.5.0" }
2. 清理冗余依赖
移除gradle中重复声明的依赖:
// 删除重复的这一行 kapt("org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0")
3. 清理缓存并重建项目
- 点击Android Studio顶部菜单
File -> Invalidate Caches... -> Invalidate and Restart - 重启后执行
Build -> Rebuild Project
额外优化建议
- 升级Coroutines到稳定版
1.7.3,替换旧的1.4.3版本,避免协程相关的潜在问题 - 尽量使用BOM管理依赖版本,确保所有依赖版本保持一致,减少冲突概率
内容的提问来源于stack exchange,提问作者Dzy
相关产品推荐
相关产品推荐

