【问题标题】:@InstallIn can only be used on @Module or @EntryPoint classes@InstallIn 只能用于 @Module 或 @EntryPoint 类
【发布时间】:2020-12-11 22:17:14
【问题描述】:

我是 Android 依赖注入的新手。我正在使用 Dagger-Hilt,在为 DB 提供程序生成的 AppModule 类中出现错误并且项目无法编译。

错误是@InstallIn can only be used on @Module or @EntryPoint classes 这是我的 AppModule 对象。我在哪里犯错了?

@Module
@InstallIn(ApplicationComponent::class)
object AppModule {

@Singleton
@Provides
fun provideAppDatabase(
    @ApplicationContext app: Context
) = Room.databaseBuilder(
    app,
    AppDatabase::class.java,
    "gelirkenal"
).build()

@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}

【问题讨论】:

  • 你找到解决办法了吗?
  • 仍未找到解决方案?我的问题:@InstallIn,只能和@DefineComponent一起使用——带注释的类

标签: android kotlin dagger dagger-hilt


【解决方案1】:

我将 Module 的导入设置如下:

import com.google.android.datatransport.runtime.dagger.Module

但以下是正确的:

import dagger.Module

【讨论】:

  • 拯救了我的一天!谢谢
【解决方案2】:

ApplicationComponent::class更改为SingletonComponent::class,您还可以通过参考Hilt Generated Components找到更多的刀柄生成组件

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Singleton
@Provides
fun provideAppDatabase(
    @ApplicationContext app: Context
) = Room.databaseBuilder(
    app,
    AppDatabase::class.java,
    "gelirkenal"
).build()

@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}

【讨论】:

    【解决方案3】:

    更改以下导入:

    import com.google.android.datatransport.runtime.dagger.Module
    import com.google.android.datatransport.runtime.dagger.Binds
    

    到 =>

    import dagger.Module
    import dagger.Binds
    

    【讨论】:

      【解决方案4】:

      您似乎在项目中为不相关的类添加了@InstallIn 注释。

      【讨论】:

      • 我刚刚在 AppModule 中添加了@InstallIn 注解。还将@HiltAndroidApp 添加到Application 类,@AndroidEntryPoint 添加到Activities 和Fragments,@ViewModelInject 添加到ViewModel 构造函数。哪里错了?
      【解决方案5】:

      在我的情况下,导入不正确

      来自:

      import com.google.android.datatransport.runtime.dagger.Module
      import com.google.android.datatransport.runtime.dagger.Provides
      

      到:

      import dagger.Module
      import dagger.Provides
      

      【讨论】:

        猜你喜欢
        • 2021-08-25
        • 2021-08-31
        • 2021-03-27
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 2021-05-02
        • 2020-02-19
        相关资源
        最近更新 更多