はじめに
Kotlin Multiplatform 公式チュートリアルの 「5. Share more logic」 を実施する場合に発生する Unresolved reference: lifecycle エラーの解決方法について記載する。
本エラーは、 Kotlin Multiplatform 公式チュートリアルの指示通りに Kotlin Multiplatform wizard で KMP プロジェクトを作成した場合に発生する。(2024/01/28 時点)
Android エンジニアにとっては何でもないエラーであるが、 iOS エンジニアにとって、Gradle 関連のエラーは解決に時間を要するだろうという予測のもと本記事を書いた。
事象
「5. Share more logic」 の以下を実施すると、
e: file:///Users/xxxx/プロジェクト名/composeApp/build.gradle.kts:27:42: Unresolved reference: lifecycle
というエラーが発生する。
解決方法
libs.androidx.lifecycle.viewmodel.compose
は "libs."で始まるのでバージョンカタログにライブララリが定義されていないのだろうと予測できる。
gradle/libs.versions.toml を覗くと案の定 "androidx-lifecycle-viewmodel-compose" という定義はない。
libs.androidx.lifecycle.viewmodel.compose
がなぜandroidx-lifecycle-viewmodel-compose
という定義でバージョンカタログファイルに定義されるのかということはここを参照されたい。
gradle/libs.versions.toml に androidx-lifecycle-viewmodel-compose
を以下のように追加する。バージョンについて ここ を参照してはなるべく新しいものを設定すると良いと思われる。
[versions]
...
lificycle-viewmodel-compose = "2.7.0"
[libraries]
...
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lificycle-viewmodel-compose" }
これでエラーが解消され、ビルドに成功するはずである。