0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android Studio を最新版にしたらクラッシュに悩まされた話

Last updated at Posted at 2024-12-18

はじめに

  • Android Studio を最新版 Ladybug にアップデートしたら、個人開発中のプロジェクトがビルドできなくなりました
  • 試行錯誤の末、なんとかクラッシュは解消できたのですが根本的な原因をきちんと理解できていないので一旦対処法だけ記載しています
  • 有識者の方はご教授願います

クラッシュ時のエラーログ

  • ビルドしてアプリを起動した時にクラッシュ
  • その際のエラーログはこちら

image.png
text ↓

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 がうまく動作していない

実際にビルド後に app/build/generated フォルダを見るとkspファイルがありません

image.png

  • Android Studioを最新版にした影響による互換性の問題かなと思い
  • Kotlinkspのバージョンをいろいろ試してみた

結論

  • 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"

kspCachesというksp関連のファイルが生成されました
クラッシュも治りました

image.png

補足

KSPとは

Kotlin Symbol Processing

  • Kotlinの軽量なCompiler Plugin を開発するためのAPI
  • Kotlinの機能を活用して、簡略化されたCompiler Pluginを提供

KSPは、kaptより効率的な代替ツールであり、両方サポートしている場合は、ビルド時間を改善するためにKSPを使用するべき

KSPkaptについては以下の DroidKaigi2024 の動画が大変わかりやすいです

試したこと

公式ドキュメントには、2.1.0-1.0.29 とありますが、うまくいきませんでした。
互換性の問題ですかね。(よくわかってません)

以下参考にしたやり取りです↓

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?