kotlin使用dagger2踩坑
java中使用dagger2
在app的build.gradle中添加如下,即可使用dagger2
dependencies {
..
implementation 'com.google.dagger:dagger:2.45'
annotationProcessor 'com.google.dagger:dagger-compiler:2.45'
..
}
rebuild后自动生成代码
kotlin中使用dagger2
坑1 - build.gradle依赖
如果直接使用java的依赖,虽然不会报错,但编译器无法自动生成dagger代码,导致dagger无法使用
这里需要在build.gradle中用到到kapt(Kotlin Annotation Processing Tool),对应位置添加如下配置,重新sync即可
plugins {
//..
id 'kotlin-kapt'
}
kapt {
generateStubs = true
}
dependencies {
//..
implementation 'com.google.dagger:dagger:2.45'
kapt 'com.google.dagger:dagger-compiler:2.45'
kapt 'com.google.dagger:dagger-android-processor:2.45'
//..
}
自动生成代码会在kapt包中
坑2 - Lazy懒加载
使用dagger的懒加载进行依赖注入,除了dagger中的Lazy,kotlin也提供了Lazy的API,使用时需要注意导入正确的包