【Android】RoomとKSPを使うための設定方法(バージョンカタログ対応)

Room データベースを使うためには3つの依存関係を追加する必要があります。
dependencies {
// 省略
implementation(libs.androidx.room.runtime)
ksp(libs.androidx.room.compiler)
implementation(libs.androidx.room.ktx)
}
バージョンカタログがデフォルトになってから設定の書き方が少し変わったのでメモしておきます。
開発環境
以下の環境で動作確認しています。
Android Studio | Koala | 2024.1.1 Patch 1 |
---|---|
minSdk | 21 |
targetSdk | 34 |
KSPを有効化
まずは KSP(Kotlin Symbol Processing)を有効化します。
以前は Kapt(Kotlin Annotation Processing Tool)を使うのが一般的でしたが、現在は処理速度が最大2倍になる KSP の使用が推奨されています。
KSP を有効化するために Gradle Scripts フォルダにある3つのファイルを変更していきます。
① libs.versions.toml
Gradle Scripts → libs.versions.toml を開きます。

このファイルにはプラグインやライブラリのバージョンが指定されていて、3行目あたりに Kotlin のバージョンが kotlin = “1.9.20” のように書いてあります。
KSP のバージョンはこちらのページから調べることができるので、同じ Kotlin のバージョン番号から始まる KSP バージョンを選んでください。
私の環境では kotlin = “1.9.20” になっているので、KSP は 1.9.20-1.0.14 にしています。
バージョンが決まったら、12行目あたりに ksp = “バージョン名” と入力して、画面右上の Sync Now をクリックします。

同じファイルの最終行に
google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
と入力して、画面右上の Sync Now をクリックします。

google-devtools-ksp という文字列は自由に指定できますが、id から取るのが一般的です。
② build.gradle.kts (Project)
次は build.gradle.kts (Project: プロジェクト名) を開きます。* Module ではないので注意

5行目あたりに
alias(libs.plugins.google.devtools.ksp) apply false
と入力して、画面右上の Sync Now をクリックします。

③ build.gradle.kts (Module)
次は build.gradle.kts (Module: app) を開きます。* Project ではないので注意

4行目あたりに
alias(libs.plugins.google.devtools.ksp)
と入力して、画面右上の Sync Now をクリックします。

以上で KSP を使う準備は完了です。
Roomライブラリの追加
Room データベースを使うために最低限必要になるのが、以下の3つです。
dependencies {
// 省略
implementation(libs.androidx.room.runtime)
ksp(libs.androidx.room.compiler)
implementation(libs.androidx.room.ktx)
}
dependencies に直接この3行を追加すると、バージョンカタログ(libs.versions.toml)への記述も自分でしなくてはいけないので面倒です。
自動的にコードが追加されるように、ライブラリの読み込みには Project Structure を使うのがおすすめです。
Project Structure を開く
build.gradle.kts(Module :app) ファイルの上部に表示されている Open をクリックします(表示されていない場合は Android Studio 右上の アイコンから Project Structure を選択)。

左側の Dependencies を選択 → 中央にあるマークをクリック → Library Dependency をクリックします。

room-runtime
検索ボックスに room-runtime と入力して Enter キーを押します。
検索結果が表示されたら room-runtime をクリックして、右側でバージョンを選択します。
ここでは 2.6.1 を選択していますが、環境に合わせて変更してください。
選択したら右下の OK を押します。

room-complier
もう一度、中央にあるマーク → Library Dependency をクリックして、同じ画面を開きます。
今回は room-compiler を検索、バージョンを選んで、右下の OK を押します。

room-ktx
もう一度、中央にあるマーク → Library Dependency をクリックして、同じ画面を開きます。
今回は room-ktx を検索、バージョンを選んで、右下の OK を押します。

追加する
3つのライブラリを追加したら、右下の Apply をクリックして変更を適用して、OK をクリックします。

KSP
build.gradle.kts(Module :app) の下の方にある dependencies 部分にライブラリが追加されました。
このなかの
implementation(libs.androidx.room.compiler)
を
ksp(libs.androidx.room.compiler)
に変更して、右上に表示される Sync Now をクリックします。

完了
以上で完了です。
エラーが出てしまう場合はバージョンが原因の可能性が高いです。
バージョンは libs.versions.toml から直接変更することができます。どうしても動かない場合は以下のバージョンで動作確認済みですのでお試し下さい。
[versions]
agp = "8.5.2"
kotlin = "1.9.0"
coreKtx = "1.13.1"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
material = "1.12.0"
activity = "1.9.2"
constraintlayout = "2.1.4"
ksp = "1.9.0-1.0.13"
roomRuntime = "2.6.1"
roomCompiler = "2.6.1"
roomKtx = "2.6.1"