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版本过高

扫描二维码关注公众号,回复: 8835092 查看本文章

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

stackoverflow上的回答

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中的资源文件。

发布了7 篇原创文章 · 获赞 7 · 访问量 2722

猜你喜欢

转载自blog.csdn.net/qq_38527695/article/details/104078738