DevelopersのAndroid Kotlin の基礎のレッスン7までやり終えてやっとアプリが作れると思いきや、まさかのkspのせいでなかなか手こずったので問題そのものと、解決した方法を書きたいと思います。
※ 因みにこのコースを受講するきっかけの記事と、このコースを受講する際に参考にした記事も貼っておきます。
・受講するきっかけの記事
・参考にした記事
参考に記事の方はコースごとに丁寧に解説していてとてもわかりやすかったのでおすすめ。
本題
android studioでroomを使おうとして公式のドキュメント通りに追加したらエラーが出たので、
色々と試したものと、最終的に解決した方法を書いていきたいと思います。
環境
android-studio-2023.3.1.18-windows.exe
targetSdk = 34
compileSdk = 34
結論
こちらのサイトで紹介されている方法でroomとkspを導入して、javaのバージョン不一致が起きるので、バージョンを一致させるために、sourceCompatibilityとtargetCompatibilityをjavaVersion.VERSION_17に変えて、同じくjvmTargetを17に変えたら直りました。
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
エラー
エラー内容:Unresolved reference: ksp
androidの公式のdocumentを見ながらroomとkspを導入していたら、普通にエラーしました。なして、、、
公式のroomのドキュメント
一応最上位レベルのbuild.gradle.ktsにもKSPプラグインを追加してもkspを認識してくれなかったので、どうすれば良かったのか。有識者の方で知っているのであれば教えて欲しいです。
エラー内容:Unresolved reference: ksp
次は色々調べた結果、ここ最近に書かれていてかつ、丁寧に書かれていたので、初心者の僕にも理解できてとても良かったのですが、kspを認識してくれませんでした。残念、、、
一応リンクを貼っておきます。
しかし、ここの記事のバージョンのエラーの解決方法を後に使います。
エラー内容:'compileDebugJavaWithJavac' task (current target is 1.8) and 'kspDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
色々とサイトを検索した結果、根本的にroomとkspの実装がおかしいのではないかと思い、roomの実装について調べました。下記の記事を参考にしました。
因みにこの記事を参考にしたら解決しました。
記事通りに導入してsyncをしたら上記のエラーが出てきました。バージョンでのエラーは先ほど見た記事に書いてあったので、
先ほどの記事を参考にsourceCompatibilityとtargetCompatibilityのバージョンを17に変えて、jvmtargetも同様に変えたら無事起動する事ができました。
終わり
以上になります。何か間違えであったり、もっとこうした方がいいなど意見がありましたら、是非ご指摘ご鞭撻の方よろしくおねがいします。