初接触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版本过高
扫描二维码关注公众号,回复:
8835092 查看本文章
解决方法:降低(回退)gradle版本
4.多mudle引入dagger
原因:在尝试了上面三种解决方法后,笔者问题尚未得到解决。思来想去,唯一的可能应该是笔者的项目存在多个module,而dagger的依赖是在项目的另一个module引入的,然后在app模块中使用的是 api project(),导致在引入dagger的module里, build.gradle文件annotationProcessor未生效。
解决方法:
方法一:
dagger的component、module文件以及dagger的依赖引入必须处于同一个module中。使用此方法,daggerXXXcomponent将生成在该module中;
方法二:
app模块的api project(':moduleName') 改为 annotationProcessor project(':moduleName'),但是需要注意的是,使用annotationProcessor 将无法获得该module中的资源文件。