dagger2无法生成daggerXXXcomponent原因分析

初接触dagger,在生成daggerXXXcomponent的过程中踩了不少坑,因此在网上搜罗了可能的原因以及解决方法,并作记录防止再次踩坑。

无法生成daggerXXXcomponent的原因可能有多种,下面先列出笔者在网上找到的可能的原因:

1.未重新构建项目;

网上最多也是最简单的原因:DaggerXXXComponent需要成功编译项目才会生成

解决方法:

如果是Android Studio的话,使用快捷键Ctrl+F9进行编译

 

2.android studio 3.0之后不再支持apt

解决方法:将 apt 改成 annotationProcessor

例如:

api 'com.google.dagger:dagger:2.15'
apt 'com.google.dagger:dagger-compiler:2.15'

改成:

api 'com.google.dagger:dagger:2.15'
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'

 

3.following annotation processors are not incremental

原因:gradle plugin版本过高

解决方法:降低(回退)gradle plugin版本

stackoverflow上的回答

 

4.跨mudle引入dagger

原因:在尝试了上面三种解决方法后,笔者问题尚未得到解决。思来想去,唯一的可能应该是笔者的项目存在多个module,而dagger的依赖是在项目的另一个module引入的(称之为moduleB),然后在app模块中使用的是 api project(:moduleB),导致moduleB里的build.gradle文件annotationProcessor未生效。

解决方法:

方法一:

dagger的component、module文件以及dagger的依赖引入必须处于同一个module中。使用此方法,daggerXXXcomponent将生成在该module中;

方法二:

app模块的api project(':moduleName') 改为 annotationProcessor project(':moduleName'),但是需要注意的是,使用annotationProcessor 将无法获得该module中的资源文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值