5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dagger Hiltでよくハマるミス

Posted at

Dagger Hiltでよくハマるミス

appモジュール -> moduleA -> moduleB

という依存関係で、

// moduleB
interface Hoge
class HogeImpl : Hoge

@Module
@InstallIn(SingletonComponent::class)
abstract class BModule {
  @Binds
  abstract fun provideHoge(impl: HogeImpl): Hoge 
}

// moduleA
class UseCase @Inject constructor(
  private val hoge: Hoge
) {
}

// appモジュール
class HogeViewModel @Inject constructor(
  private useCase: UseCase
) : ViewModel() {
}

こんな感じのDIをしていた場合に、appモジュールのbuild.gradleでmoduleBへのimplementationを忘れているとビルドエラーになる。

これはHiltが生成する Xxx_HiltComponents_SingletonC.javaBModule_provideHogeFactory 経由で Hoge へ依存を持っており、結果としてappモジュールもmoduleBに依存している状態なっており、ビルドエラーとなっている。

なので、解決方法としてappモジュールのbuild.gradleでmoduleBへのimplementationの追加が必要となる。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?