Skip to content

libs.versions.toml への Hilt 依存関係の追加方法

問題点

Android Studio で libs.versions.toml を使用するプロジェクトに Hilt を追加すると、implementation(libs.hilt) で「未解決の参照」エラーが発生します。これは以下の原因によります:

  1. TOML ファイルでの Hilt 依存関係の定義方法が不適切
  2. KSP プラグインの未設定
  3. プロジェクト依存関係の連携不足

解決策:Hilt と KSP を TOML で正しく設定する方法

ステップ 1: libs.versions.toml の更新

gradle/libs.versions.toml ファイルに以下を追加:

toml
[versions]
hilt = "2.50"  # Hiltの最新バージョンに更新
ksp = "1.9.20-1.0.14"  # KSPの最新バージョンに更新

[libraries]
# Hilt本体ライブラリ
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }

# KSP用コンパイラ
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }

[plugins]
# Hilt Gradle プラグイン
hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }

# Kotlin Symbol Processing プラグイン
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

バージョン確認

常に公式サイトで最新バージョンを確認してください:

ステップ 2: プロジェクトレベルの設定 build.gradle.kts

プロジェクトルートの build.gradle.kts に以下を追加:

kotlin
// 最上部のプラグイン管理ブロック内
plugins {
    alias(libs.plugins.hilt.android) apply false
    alias(libs.plugins.ksp) apply false
}

注意

apply false はプロジェクト全体でプラグインを使用可能にするだけで個別モジュールには適用しません

ステップ 3: アプリモジュールの設定 build.gradle.kts

kotlin
plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    
    // Hilt & KSP プラグインを適用
    alias(libs.plugins.hilt.android)
    alias(libs.plugins.ksp)
}

dependencies {
    // Hilt 本体の依存関係
    implementation(libs.hilt.android)
    
    // KSP プロセッサ(kaptではなくkspを使用)
    ksp(libs.hilt.compiler)
}

kapt ではなく ksp を使用

Kotlin プロジェクトでは kapt ではなく KSP(Kotlin Symbol Processing) が推奨されます:

  • ビルド速度が向上
  • Kotlin 固有の機能をフルサポート

完全同期とクリーンビルド

  1. Sync Now で Gradle 同期を実行
  2. エラーが残る場合 Build > Clean Project を実行
  3. Build > Rebuild Project で完全再ビルド

::: success 確認ポイント 同期後、以下のインポートが解決されていることを確認:

kotlin
import libs.plugins.hilt.android
import libs.hilt.android

:::

よくあるエラーと対処法

エラー: Unresolved reference: hilt

  • TOML ファイル定義ミス:ライブラリ名が hilt-android であれば libs.hilt.android で参照
  • 同期不足:クリーンビルドを実行

エラー: Hilt Android plugin was applied but no com.google.dagger:hilt-android...

  • TOML ファイルでの [plugins] 定義漏れ
  • アプリモジュールでのプラグイン適用漏れ

エラー: kspPlugins not found

  • KSP バージョンが古い:ksp = "..." を最新版に更新
  • アプリモジュールの plugins ブロックに ksp 追加漏れ

ベストプラクティス

  1. バージョン管理versions ブロックで全依存関係を集中管理
  2. 依存関係アルファベット順[libraries] 内で定義をソート可視性向上
  3. バージョン定数化:同一バージョンで使用する依存関係は version.ref で共有
toml
[versions]
retrofit = "2.11.0"

[libraries]
retrofit-core = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" }
retrofit-gson = { group = "com.squareup.retrofit2", name = "retrofit-converter-gson", version.ref = "retrofit" }