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

在含Dagger/Hilt的遗留应用集成Jetpack Compose时遇运行崩溃

解决Compose集成Hilt时的LiveLiterals运行时错误

问题根源

这个错误的核心原因是:Compose编译器错误地给非Compose模块(也就是你的CommonModule所在的模块)生成了LiveLiterals相关代码,但该模块并没有引入Compose依赖,导致运行时找不到对应的方法。就算你在app模块禁用了LiveLiterals,其他模块可能仍被Compose编译器误处理。

分步解决方案

  • 仅在Compose模块应用编译配置
    打开包含CommonModule的模块(比如di模块)的build.gradle.kts(或.gradle)文件,移除所有Compose相关的编译插件和配置:

    // 移除Compose编译器插件引用
    // id("org.jetbrains.kotlin.plugin.compose")
    
    // 移除Compose编译器参数配置
    // kotlinOptions {
    //     freeCompilerArgs += listOf(
    //         "-plugin-option", "androidx.compose.compiler.plugins.kotlin:liveLiteralsEnabled=false"
    //     )
    // }
    

    确保只有实际使用Compose的app模块保留这些配置。

  • 全局禁用LiveLiterals
    如果上面的操作无效,在项目根目录的gradle.properties中添加全局配置,强制所有模块禁用LiveLiterals:

    androidx.compose.compiler.plugins.kotlin.liveLiteralsEnabled=false
    
  • 彻底清理重建项目
    执行以下操作清除旧编译产物:

    1. 点击Android Studio菜单栏的Build > Clean Project
    2. 接着执行Build > Rebuild Project
    3. 必要时手动删除项目根目录的.gradle文件夹和各模块的build文件夹,重启Android Studio
  • 排查模块依赖
    用./gradlew :your-di-module:dependencies命令查看CommonModule所在模块的依赖树,确认没有间接引入不必要的Compose依赖,如有则通过exclude排除。

额外注意

如果项目用了模块化Hilt配置,确保各模块的@Module、@InstallIn等注解配置正确,避免Compose编译器误识别Hilt模块类为Compose相关代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:41:12