gpt4 book ai didi

kotlin - Dagger 和 Kotlin 。 Dagger 不生成组件类

转载 作者:IT老高 更新时间:2023-10-28 13:26:56 35 4
gpt4 key购买 nike

我是 kotlin 和 Dagger 的新手。我有一个小问题,我不知道如何解决,也没有找到解决方案。

这就是我所拥有的:

@Module
class AppModule (app: Application) {
private var application: Application;

init {
this.application = app;
}

@Provides fun provideApplication(): Application? {
return application;
}

@Provides fun provideResources(): Resources? {
return application.resources;
}
}

@Singleton
@Component(modules = arrayOf(AppModule::class))
interface AppComponent: AppComponentBase {

public class Initializer {
private constructor(){}

companion object {
fun Init(app: Application): AppComponent? {
return DaggerAppComponent.builder().appModule(AppModule(app)).build()
}
}
}
}

AppComponentBase:该接口(interface)包含该组件所需的所有方法。

现在,问题是如果我这样做 DaggerAppComponent.builder().appModule(AppModule(app)).build()DaggerAppComponent.builder().appModule(AppModule(app)).build() companion object 中的 code> 调用。如果调用同一行任何由 companion object Dagger 生成 de 类没有任何问题。

我寻找解决方案的另一件事是创建另一个具有相同结构的不同类,并将 DaggerAppComponent 作为内部对象导入,我也发生了同样的结果。

我没有在外面初始化组件。那么,还有其他替代解决方案,或者我做错了什么?

最佳答案

您需要拥有 kapt processor在 build.gradle 中:

kapt {
generateStubs = true
}

dependencies {
...
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'com.google.dagger:dagger:2.0.2'
kapt 'com.google.dagger:dagger-compiler:2.0.2'
...
}

这个扩展会生成 Dagger 的代码。

此外,对于较新的 gradle 版本,您还可以在 build.gradle 中应用该插件:

apply plugin: 'kotlin-kapt'

dependencies {
...
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'com.google.dagger:dagger:2.0.2'
kapt 'com.google.dagger:dagger-compiler:2.0.2'
...
}

您可以查看this project供引用

关于kotlin - Dagger 和 Kotlin 。 Dagger 不生成组件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34376061/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com