在执行匕首-2的刀柄迁移时,得到了一个模块的错误。
错误:
FooModule.Companion is listed as a module, but it is a companion
object class.
Add @Module to the enclosing class
and reference that instead.希尔特之前的,
@Module
abstract class FooModule {
@Binds
@FooScope
abstract fun bindsManager(impl: FooManagerImpl): FooManager
@Module
companion object {
@Provides
@FooScope
@JvmStatic
fun providesConfig(prefs: SharedPreferences): FooConfig = FooConfigImpl(prefs)
}
}希尔特后的
@InstallIn(ApplicationComponent::class)
@Module
abstract class FooModule {
@Binds
@FooScope
abstract fun bindsManager(impl: FooManagerImpl): FooManager
@InstallIn(ApplicationComponent::class)
@Module
companion object {
@Provides
@FooScope
@JvmStatic
fun providesConfig(prefs: SharedPreferences): FooConfig = FooConfigImpl(prefs)
}
}迁移文档参考:https://developer.android.com/codelabs/android-dagger-to-hilt#4
发布于 2020-11-06 08:34:10
您需要将companion object更改为object
@InstallIn(ApplicationComponent::class)
@Module
abstract class FooModule {
@Binds
@FooScope
abstract fun bindsManager(impl: FooManagerImpl): FooManager
@InstallIn(ApplicationComponent::class)
@Module
object AppModule{
@Provides
@FooScope
fun providesConfig(prefs: SharedPreferences): FooConfig = FooConfigImpl(prefs)
}
}发布于 2020-11-05 15:45:24
匕首2.26使在@Component或@Subcomponent的modules参数中包含一个伴生对象模块是错误的。相反,如果包含的类是模块,则自动包含同伴对象。Hilt的@InstallIn简单地将带注释的模块添加到生成的组件类中,因此,如果用@InstallIn注释伴生对象,则会得到相同的错误。
从伴生对象中删除@InstallIn (和@Module),一切都应该正常工作。
https://stackoverflow.com/questions/64691976
复制相似问题