1
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?

More than 1 year has passed since last update.

kotlinx.serializationをKMMで使うと「kotlinx.serialization compiler plugin is not applied to the module, so this annotation would not be processed.」とエラーになる(解決)

Last updated at Posted at 2022-12-31

この記事は?

本年もあと少し。今年もQiitaには大変お世話になりました。
ところで最近KMMを勉強し始めました。結構ど頭でつまづいたのですが情報がほとんどなかったので、簡単にまとめたいと思います。

KMMとは?

この記事を読んでいるってことはKMMについてはご存知だと思うので省略。

発生した症状

kotlinx.serializationをサイトの記述に沿ってプロジェクトに追加したのに、アノテーションなどが有効にならない。

例) @Serializableを付与すると、強調表示になって以下のメッセージが表示される。

image.png

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.ktspluginsにもkotlin("plugin.serialization")を追加しないとダメだったということ。

修正前(抜粋):

/shared/build.gradle.kts
plugins {
    kotlin("multiplatform")
    id("com.android.library")
}

修正後(抜粋):

/shared/build.gradle.kts
plugins {
    kotlin("multiplatform")
    kotlin("plugin.serialization")
    id("com.android.library")
}

まとめ

自分、まだGradle歴が浅いため「トップディレクトリのbuild.gradle.ktsに書いたら、配下に伝播する」と勝手に思い込んでいました(各種公式サイトには確かにそうは書いていない、けど/shared/build.gradle.ktsにも書けとも書いてない)。Gradle周り、ご存知の方ならなんの問題ないことなのかもしれませんが、初学者には厳しいハードルとなっています。もう少しスマートにならないものでしょうか、、、

1
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
1
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?