【问题标题】:Android - Dagger not generating DaggerModelComponent.create()Android - Dagger 不生成 DaggerModelComponent.create()
【发布时间】:2019-12-13 16:53:43
【问题描述】:

我正在按照这里的这些教程来学习匕首。 https://www.youtube.com/watch?v=wJkHYBf8VkA

在我的活动中,我试图在重建我的项目后调用 DaggerModelComponent.create() 并且它未解决。

这是我的模型类:

class Car @Inject constructor(engine: Engine, wheels: Wheels) {

fun drive(){
    Log.d("Car", "driving...")
}}

我的组件界面:

@Component interface CarComponent {

fun getCar() : Car }

还有我的活动:

private lateinit var car: Car

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val component = DaggerCarComponent.create()
    car.drive()
}

我也有引擎和车轮的模型:

class Engine @Inject constructor()

class Wheels @Inject constructor()

这在我的活动中不起作用:

val component = DaggerCarComponent.create()

显然,Dagger 应该生成这个类,但我不认为它是。

这些是我的应用 build.grale 中的依赖项导入

implementation 'com.google.dagger:dagger:2.25.2'
annotationProcessor 'com.google.dagger:dagger-compiler:2.25.2'

我错过了什么吗?也许我在 Kotlin 中做错了什么,我正在学习 Java 教程。 提前致谢。

【问题讨论】:

    标签: java android kotlin dependency-injection dagger


    【解决方案1】:

    找到了解决方案!对于 Kotlin,显然最好使用 kapt 而不是 annotationProcessor。所以添加:

    apply plugin: 'kotlin-kapt'
    

    kapt 'com.google.dagger:dagger-compiler:2.25.2'
    

    到 app build.gradle 解决了这个问题。

    【讨论】:

    • apparently it's better to use kapt over annotationProcessor 好吧,kapt 代表:Kotlin Annotation processing tool :)
    • 不过,在找到自己的解决方案方面做得很好。和(迟到的)欢迎堆栈溢出
    • 谢谢!天天学习哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多