当前位置: 首页 > 知识库问答 >
问题:

Dagger和Kotlin。Dagger不生成组件类

汝宏伯
2023-03-14
@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:此接口包含此组件所需的所有方法。

现在,问题是,如果我在同伴对象执行DaggerAppComponent.Builder().AppModule(AppModule(app)).build()调用,则此DaggerAppComponent类不是由Dagger生成的。如果调用相同的行,则由companion objectdagger生成de类,不会有任何问题。

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

共有1个答案

仲高超
2023-03-14

您需要在build.gradle中安装kapt处理器:

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版本,您还可以在您的构建中应用该插件。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'
    ...
}
 类似资料:
  • 基本上,这个IThttps://github.com/ribot/android-boilerplate变成了Kotlin。

  • 我已经开始设置匕首2,并面临一个奇怪的问题,看起来像一个bug对我来说。 我有1个主组件和2个子组件,我‘加’在父组件中。我为每个子组件使用不同的。问题是,我可以很容易地为第一个子组件进行字段注入,但我不能为第二个子组件进行相同的注入。注入的字段保持%s。 我正在注射的对象: 这两个对象都具有作用域(作为它们的构造函数字段)。会不会是范围冲突? ---更新--- 我已经检查了由Dagger2生成的

  • null null null 到目前为止,它与示例GitHub几乎相同。当dagger为src/main中的组件构建器生成代码时,它们会正确地生成。但是,Dagger并不为src/test中的组件构建器生成代码。 我的主要建筑。Gradle: 我的应用程序/Build.Gradle null null null 我不知道为什么它会构建到中间层,我假设我需要build.gradle文件来使用而不是,

  • https://github.com/google/dagger/blob/master/examples/simple/src/main/java/coffee/coffeeapp.java 任何帮助都将不胜感激。

  • 事情是这样的...我认为注释处理器正在运行,但不知何故,android gradle插件无法在编译时输入生成的源代码。我检查了app/build/generated/source/apt/test/目录,并在其中发现,但由于某种原因,它没有作为依赖项导入。 有什么想法吗?这里是一个测试项目的链接,显示了我的问题

  • Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于经过了公司内部多个项目的实践,也取得了不错的成效,因此,希望开源以后可以对大家有所帮助及参考。 设计理念 Dagger首先是一个WebUI自动化框架,提供了赖以操纵浏览