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

升级Dagger至2.44后项目编译失败,报FileTooBigException错误

Dagger升级到2.44后因生成的Component文件过大导致编译失败的解决方法

问题分析

升级Dagger从2.29.1到2.44后,编译报错FileTooBigException,核心原因是生成的DaggeAppComponent.java文件体积达24MB左右,超出了Kotlin前端编译器的内存加载限制。你之前修改的IDE配置仅影响IDE自身的文件加载逻辑,无法作用于编译阶段的Kotlin编译器,因此问题未得到解决。

可行修复方案

1. 拆分庞大的Dagger Component/Subcomponent

将单一的大型AppComponent拆分为多个功能独立的Component或Subcomponent,按业务模块(如用户模块、商品模块等)划分职责,每个Component仅负责对应模块的依赖注入。拆分后每个生成的Component文件体积会大幅降低,从根源上避免文件过大问题。

示例思路:

  • 原AppComponent包含所有模块依赖,拆分后创建UserComponent、ProductComponent等子组件
  • 通过@Component(dependencies = [AppComponent::class])或@Subcomponent将子组件与根组件关联

2. 开启Dagger增量注解处理

Dagger 2.31及以上版本支持增量注解处理,可减少每次编译生成的文件体积,同时提升编译速度。在Gradle配置中添加以下设置:

如果使用Java注解处理器:

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf("dagger.incremental" to "true")
            }
        }
    }
}

如果使用KAPT:

kapt {
    incremental = true
}

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf("dagger.incremental" to "true")
            }
        }
    }
}

3. 调整Kotlin编译器的文件大小限制

针对Kotlin编译器的内存加载限制,修改编译阶段的JVM参数:

在项目根目录的gradle.properties中添加:

kotlin.daemon.jvmargs=-Didea.max.content.load.filesize=50000 -Didea.max.intellisense.filesize=50000

或者在模块的build.gradle.kts中配置Kotlin编译参数:

tasks.withType<KotlinCompile>().configureEach {
    kotlinOptions {
        freeCompilerArgs += "-Didea.max.content.load.filesize=50000"
    }
}

4. 清理缓存并重新构建

执行以下命令清除旧的Dagger生成文件和编译缓存,确保新配置生效:

# Linux/Mac
./gradlew clean build

# Windows
gradlew.bat clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:05:21