Android 从匕首2移到剑柄
我在这里尝试遵循刀柄迁移指南: 并在我的所有模块上添加了以下注释:Android 从匕首2移到剑柄,android,dagger-2,dagger-hilt,Android,Dagger 2,Dagger Hilt,我在这里尝试遵循刀柄迁移指南: 并在我的所有模块上添加了以下注释: @InstallIn(SingletonComponent::class) 然而,我的服务、片段和活动的“贡献者”模块遇到了问题 我每个都有一个模块 @Module @InstallIn(SingletonComponent::class) abstract class FragmentContributorModule { @ContributesAndroidInjector internal abstr
@InstallIn(SingletonComponent::class)
然而,我的服务、片段和活动的“贡献者”模块遇到了问题
我每个都有一个模块
@Module
@InstallIn(SingletonComponent::class)
abstract class FragmentContributorModule {
@ContributesAndroidInjector
internal abstract fun contributeMyFragment(): MyFragment
}
@Module
@InstallIn(SingletonComponent::class)
abstract class ActivityContributorModule {
@ContributesAndroidInjector
internal abstract fun contributeMyActivity(): MyActivity
}
@Module
@InstallIn(SingletonComponent::class)
abstract class ServiceContributorModule {
@ContributesAndroidInjector
internal abstract fun contributeMyService(): MyService
}
在编译过程中,我发现每个“贡献”函数都有错误:
com.test.ActivityContributorModule_ContributeMyActivity$defaultsDebug is missing an @InstallIn annotation. If this was intentional, see https://dagger.dev/hilt/compiler-options#disable-install-in-check for how to disable this check.
我还尝试为每个模块使用ServiceComponent::class、FragmentComponent::class和ActivityComponent::class,但没有成功。我正在尝试将项目分块迁移,因此我认为在所有内容升级到Hilt之前,我无法删除这些内容
有什么想法吗?答案如下:
警告:未使用@InstallIn注释的模块
剑柄。默认情况下,当未注释的模块被删除时,Hilt会引发错误
已找到,但可以禁用此错误
起初我不是100%清楚,但我为服务/片段/活动提供的贡献者模块仅用于匕首,而不是剑柄。所以,如果您试图将项目分块迁移,您可以让这些模块保持原样,直到您开始为您的服务/片段/活动提供刀柄入口点。但是,如果这样做,您需要告诉Hilt忽略它因缺少@InstallIn而引发的错误
有关如何禁用此功能的详细信息,请参见此处:
默认情况下,Hilt检查@Module类中的@InstallIn注释
并在缺少时引发错误。这是因为如果有人
不小心忘了在模块上安装@InstallIn,这可能会非常困难
很难调试,刀柄没有拿起它
但这种检查有时可能过于宽泛,尤其是在
迁移过程中。要关闭此检查,可以使用此标志:
-Adagger.hilt.disableModulesShaveInstallInCheck=true
或者,可以在单个模块上禁用检查
通过使用@DisableInstallInCheck注释模块来设置级别
有没有试过把它们放在单独的文件中?上面的每个模块都在一个单独的文件中。