Dagger2编译无实际错误原因,如何开启更详细的错误输出?
Dagger2 详细编译日志开启及错误根因暴露配置方案
核心Dagger日志开关配置
在你APP模块的build.gradle(Groovy语法)中添加以下kapt参数配置:
kapt { arguments { // 开启Dagger注解处理器的详细日志输出 arg("dagger.verbose", "true") // 开启全绑定图校验,所有依赖问题直接标记为错误提前抛出 arg("dagger.fullBindingGraphValidation", "ERROR") } }
如果使用Kotlin DSL的build.gradle.kts,配置如下:
kapt { arguments { arg("dagger.verbose", true) arg("dagger.fullBindingGraphValidation", "ERROR") } }
解决kapt吞原始错误的补充配置
你遇到的无错误提示的InvocationTargetException是kapt默认隐藏了注解处理器的原始堆栈导致,在项目根目录的gradle.properties中添加以下配置:
# 开启kapt详细日志,保留所有注解处理器的异常输出 kapt.verbose=true # 关闭kapt的worker执行模式,避免跨进程丢失异常堆栈 kapt.use.worker.api=false # 提升Gradle日志级别,避免输出被截断 org.gradle.logging.level=info
注解类缺失场景的额外优化配置
针对你提到的NotNull注解依赖缺失这类本应提前抛出的错误,可以在模块build.gradle中开启编译期注解处理 lint 检查:
tasks.withType(JavaCompile) { options.compilerArgs += "-Xlint:processing" }
该配置会让编译器在注解处理阶段就直接抛出明确的类找不到错误,不会流转到Dagger处理阶段才触发模糊报错。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

