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

SDK 34迁移后Jetpack Compose 1.5.4编译报错问题

SDK 34迁移后Jetpack Compose 1.5.4导航过渡编译报错解决方案

问题概述

将Android SDK从33升级到34,搭配Jetpack Compose 1.5.4使用时,导航组件composable函数的过渡参数调用出现编译失败:

composable(
        route = route,
        arguments = arguments,
        deepLinks = deepLinkList(route),
        enterTransition = { enterTransition() },
        popEnterTransition = { popEnterTransition() },
        popExitTransition = { popExitTransition() },
        exitTransition = { exitTransition() }
    ) {

报错根异常为org.jetbrains.kotlin.psi2ir.generators.ErrorExpressionException,定位到enterTransition()调用位置。

核心原因

SDK 34对Android API做了调整,而旧版本的Navigation Compose未适配这些变化,与Jetpack Compose 1.5.4的兼容性出现冲突,导致编译期IR(中间表示)生成失败,触发上述异常。

解决步骤

1. 升级Navigation Compose到兼容版本

使用适配SDK 34的Navigation Compose版本,推荐2.7.5及以上,该版本修复了与高版本SDK、Compose 1.5.4的兼容性问题。在Module级build.gradle.kts中更新依赖:

dependencies {
    // 替换旧的Navigation Compose依赖
    implementation("androidx.navigation:navigation-compose:2.7.5")
}

2. 修正过渡函数调用上下文

确保enterTransition()等函数在正确的NavBackStackEntry上下文中调用。如果是自定义过渡函数,需保证签名匹配:

// 正确的过渡函数示例
private fun enterTransition(): AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition {
    return { slideInHorizontally(initialOffsetX = { it }) }
}

也可直接在lambda内编写过渡逻辑,避免上下文歧义:

composable(
        route = route,
        arguments = arguments,
        deepLinks = deepLinkList(route),
        enterTransition = { slideInHorizontally(initialOffsetX = { it }) },
        popEnterTransition = { slideInHorizontally(initialOffsetX = { -it }) },
        popExitTransition = { slideOutHorizontally(targetOffsetX = { -it }) },
        exitTransition = { slideOutHorizontally(targetOffsetX = { it }) }
    ) {
        // 页面内容
    }

3. 清理构建缓存并重新编译

  • 在Android Studio中执行File -> Invalidate Caches... -> Invalidate and Restart
  • 终端运行./gradlew clean build命令,彻底清理缓存后重新编译项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:55:00