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

Kotlin+Dagger 2:Dagger*文件不会生成

酆茂才
2023-03-14
@PerActivity
@Subcomponent(modules = arrayOf(ApplicationModule::class))
interface ActivityComponent {
    fun inject(app: OneAccountApplication)
}
@Singleton
@Component(modules = arrayOf(ApplicationModule::class))
interface ApplicationComponent {

fun inject(syncService: SyncService)
@ApplicationContext fun context(): Context
fun application(): Application
fun ribotsService(): OneAccountService
fun preferencesHelper(): PreferencesHelper
fun databaseHelper(): DatabaseHelper
fun dataManager(): DataManager
}
@ConfigPersistent
@Component(dependencies = arrayOf(ApplicationComponent::class))
interface ConfigPersistentComponent {
    fun activityComponent(activityModule: ActivityModule): ActivityComponent
}
@Module
class ActivityModule(private val mActivity: Activity) {

    @Provides
    internal fun provideActivity() = mActivity

    @Provides
    @ActivityContext
    internal fun providesContext() = mActivity
}
@Module
class ApplicationModule(val mApplication: Application) {

    @Provides @Singleton
    internal fun provideApplication() = mApplication

    @Provides
    @ApplicationContext
    internal fun provideContext() = mApplication

    @Provides
    @Singleton
    internal fun provideOneAccountService() = OneAccountService.Creator.newOneAccountService()
}
@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class ActivityContext
@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class ApplicationContext
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class ConfigPersistent
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class PerActivity
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
dependencies {

    final DAGGER_VERSION = '2.8'
    def daggerCompiler = "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
    annotationProcessor daggerCompiler
    testAnnotationProcessor daggerCompiler
    androidTestAnnotationProcessor daggerCompiler
    compile  "com.google.dagger:dagger:$DAGGER_VERSION"
}
kapt {
    generateStubs = true
}

基本上,这个IThttps://github.com/ribot/android-boilerplate变成了Kotlin。

共有1个答案

裴凯定
2023-03-14

Kotlin使用的是kapt而不是Android插件中的annotationprocessor

您需要在build.gradle文件中包含并使用以下内容:

kapt {
    generateStubs = true
}
dependencies {
    // ...
    kapt daggerCompiler
}

更详细的说明也可以在这里找到:Dagger和Kotlin

 类似资料:
  • :此接口包含此组件所需的所有方法。 现在,问题是,如果我在中执行此调用,则此类不是由Dagger生成的。如果调用相同的行,则由dagger生成de类,不会有任何问题。 我寻找的另一个解决方案是创建一个具有相同结构的其他不同类,并将作为内部对象,结果也是一样。

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

  • 问题内容: 我看到libgdx的1.3.0版本可用,所以我明白了,当我使用项目设置来设置项目时,我检查eclipse的“高级”>“ build”并点击“ generate”,但是当我尝试将其导入eclipse时,它说找不到项目。在1.3.0发行之前,版本1.2.0对我来说是完美的,现在我什至无法获得用于构建eclipse文件的版本。任何修复,我不使用gradle。 问题答案: 新的ADT 23.0

  • 我正在尝试使用Dagger2学习依赖注入。我已经创建了很少的自定义范围和限定符。我已经创建了一个应用程序组件,我想在其中注入某些全局依赖项,我还创建了一个活动组件,它将基于活动上下文返回某些实例。 现在,当我试图在活动中注入全局实例时,我得到了如下错误: ApplicationScope.kt 在注入活动类中使用的ActivityComponent.kt。 用于注入应用程序类的FireBaseCo

  • 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 任何帮助都将不胜感激。