はじめに
- Android Studio を最新版 Ladybug にアップデートしたら、個人開発中のプロジェクトがビルドできなくなりました
- 試行錯誤の末、なんとかクラッシュは解消できたのですが根本的な原因をきちんと理解できていないので一旦対処法だけ記載しています
- 有識者の方はご教授願います
クラッシュ時のエラーログ
- ビルドしてアプリを起動した時にクラッシュ
- その際のエラーログはこちら
error log
FATAL EXCEPTION: main
Process: com.example.androidapp, PID: 7247
java.lang.RuntimeException: Unable to create application com.example.androidapp.AndroidAppApplication:
java.lang.RuntimeException: Cannot find implementation for com.example.androidapp.data.room.XXXRoomDatabase. XXXRoomDatabase_Impl does not exist
-
XXXRoomDatabase_Impl does not exist
より、自動生成されるはずのRoom関連の実装ファイルが生成されていないことがわかります - つまり、
ksp
がうまく動作していない
- Android Studioを最新版にした影響による互換性の問題かなと思い
-
Kotlin
とksp
のバージョンをいろいろ試してみた
結論
-
kotlin ‘1.9.0’
+ksp ‘1.9.0-1.0.13’
の組み合わせでksp
ファイルが作られ、クラッシュ問題が解消されました
build.gradle.kts
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
id("com.google.devtools.ksp") version "1.9.0-1.0.13" apply false
}
libs.versions.toml
[versions]
kotlin = "1.9.0"
補足
KSPとは
Kotlin Symbol Processing
- Kotlinの軽量なCompiler Plugin を開発するためのAPI
- Kotlinの機能を活用して、簡略化されたCompiler Pluginを提供
KSPは、kaptより効率的な代替ツールであり、両方サポートしている場合は、ビルド時間を改善するためにKSPを使用するべき
KSP
やkapt
については以下の DroidKaigi2024 の動画が大変わかりやすいです
試したこと
公式ドキュメントには、2.1.0-1.0.29
とありますが、うまくいきませんでした。
互換性の問題ですかね。(よくわかってません)
以下参考にしたやり取りです↓