この記事は?
本年もあと少し。今年もQiitaには大変お世話になりました。
ところで最近KMMを勉強し始めました。結構ど頭でつまづいたのですが情報がほとんどなかったので、簡単にまとめたいと思います。
KMMとは?
この記事を読んでいるってことはKMMについてはご存知だと思うので省略。
発生した症状
kotlinx.serializationをサイトの記述に沿ってプロジェクトに追加したのに、アノテーションなどが有効にならない。
例) @Serializable
を付与すると、強調表示になって以下のメッセージが表示される。
kotlinx.serialization compiler plugin is not applied to the module, so this annotation would not be processed. Make sure that you've setup your buildscript correctly and re-import project.
解決方法
Google先生に聞いて色々なサイトを当たりましたが、自分の環境で思い当たる節はなく、、、
結局、原因はshared
配下のbuild.gradle.kts
のplugins
にもkotlin("plugin.serialization")
を追加しないとダメだったということ。
修正前(抜粋):
plugins {
kotlin("multiplatform")
id("com.android.library")
}
修正後(抜粋):
plugins {
kotlin("multiplatform")
kotlin("plugin.serialization")
id("com.android.library")
}
まとめ
自分、まだGradle歴が浅いため「トップディレクトリのbuild.gradle.ktsに書いたら、配下に伝播する」と勝手に思い込んでいました(各種公式サイトには確かにそうは書いていない、けど/shared/build.gradle.kts
にも書けとも書いてない)。Gradle周り、ご存知の方ならなんの問題ないことなのかもしれませんが、初学者には厳しいハードルとなっています。もう少しスマートにならないものでしょうか、、、