Jetpack Compose升级至1.2.1引发ClassCastException问题求助
Jetpack Compose 1.2.1升级后Composable Lambda类型转换崩溃问题
升级操作说明
将项目从Jetpack Compose 1.0.0升级至1.2.1,统一调整以下依赖版本为1.2.1:
// ***** UI & Jetpack Compose ***** implementation("androidx.compose.ui:ui:${SharedVersions.jetpackCompose}") // ViewBinding support to integrate xml views via AndroidView() implementation("androidx.compose.ui:ui-viewbinding:${SharedVersions.jetpackCompose}") // Tooling support (Previews, etc.) implementation("androidx.compose.ui:ui-tooling:${SharedVersions.jetpackCompose}") // Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.) implementation("androidx.compose.foundation:foundation:${SharedVersions.jetpackCompose}") // Material Design implementation("androidx.compose.material:material:${SharedVersions.jetpackCompose}") // Integration with observables implementation("androidx.compose.runtime:runtime-livedata:${SharedVersions.jetpackCompose}") implementation("androidx.compose.runtime:runtime-rxjava2:${SharedVersions.jetpackCompose}")
同时配置Compose编译器版本:
composeOptions { kotlinCompilerExtensionVersion = "1.3.2" }
为满足Jetpack Compose 1.2.1的依赖要求,同步更新了以下项目配置:
- compileSdk 从31升级至32
- targetSdk 从31升级至32
- Gradle Android插件从7.2.2升级至7.3.0
- Gradle从7.3.3升级至7.4.0
- Kotlin从1.5.10升级至1.7.20
并完成了适配新版本Kotlin的少量代码迁移。
崩溃问题详情
应用编译成功,但启动时立即崩溃,报错信息如下:
ClassCastException: androidx.compose.runtime.internal.ComposableLambdaImpl cannot be cast to kotlin.jvm.functions.Function
崩溃发生在调用以下自定义导航函数时:
fun <D> NavGraphBuilder.createAppNavGraphComposableDataAware( route: String, arguments: List<NamedNavArgument> = emptyList(), deepLinks: List<NavDeepLink> = emptyList(), content: @Composable (backStackEntry: NavBackStackEntry, data: D) -> Unit ) { addDestination(Destination(provider, content as @Composable (NavBackStackEntry, Any?) -> Unit)) }
疑问
- Jetpack Compose库或编译器发生了哪些变更导致该问题?
- 是否有其他开发者在使用Composable Lambda时遇到类似的类型转换崩溃问题?
内容的提问来源于stack exchange,提问作者Sven
相关产品推荐
相关产品推荐

