エラーとの出会い
これから新しいアプリを作ろうと思い、build.gradleの依存関係をある程度整え、Activityファイルの実装に移ろうとしたところで妙な警告が画面上部に出ているのを発見しました。
Some kotlin libraries attached to this project were compiled with a newer Kotlin compiler and can’t be read. Please update kotlin plugin. No updates found.
kotlinライブラリが読み込めないのでkotlinプラグインをアップデートしてくださいとのこと。なのにその隣にはNo updates found.とか書いてあります。アップデートしてくださいと言われているのにアップデートがないってどういうこと?
ちなみに一番右のDetailsがあるのでクリックしてみたところ、
kotlin-stblibやコルーチンのバージョンが1.6.0になっているけど1.4.2のはずでは?と言われている様子。
しかし不思議なのが、ついさっきstblibの依存関係を削除したばかりなんですよね。
試しにgradleに
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.2
の記述を書き直したりしたのですが、バージョンを1.6.0にしても1.4.2にしても警告の内容は変わりません。
kotlinプラグインを見てみる
ルートのbuild.gradleのdependenciesの中に
implementation 'org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version'
と書いていた箇所がありました。
この$kotlin_version
は同じくプロジェクトレベルのbuild.gradleの上の方に
buildscript {
ext.kotlin_version = "1.6.10"
}
と定義されています。
警告の横にあるDetailsをタップしたときに怒られてたバージョンも1.6.10なのでこの辺りをアップデートすればよさそうですね。
しかしkotlinのリリースノートを見ると1.6.10が最新だったため、アップデートのしようがありませんでした。(2022/01/21現在)
Kotlin releases | Kotlin
だからNo updates foundになっていたんですね。
解決法
- 上記の
$kotlin_version
を1.4.32に下げた - 同様にkotlin-coroutineのバージョンを1.6.0→1.4.2に下げた
build.gradleを触っているときに$kotlin_version
を1.4.32から最新版の1.6.10にしていたのでそこを戻しました。アップデートしなければならないと思い込んでいたため、バージョンを下げるという結論に達するまでに少し遠回りをしてしまいました。
今回は前の状態に戻しただけなのですが、Detailを押したときに「expected 1.4.2」と出ていたので1.4.2にしてもよかったかもしれません。(今回は試していないのですが、リリースノートを見ると1.4.2ではなく1.4.20と書かれていたので、そう書けば動きそうです。)
コルーチンに関しても同じく最新版にしていたので、こちらのリリースノートを参考にバージョンを1.4.2まで下げました。
とりあえずエラーを吐かなくなったからよかったものの、なぜ削除したはずのstblibでこのようなエラーが出たのかは謎です。
Kotlin 1.4.0のWhat’s newによるとkotlinプラグインと同じバージョンが自動でstblibのバージョンとして追加されるようになったそうなのですが、その影響で入るべきでないバージョンが追加されてしまったんですかね?
初心者ゆえにこの辺り全く理解できていないので、もしわかる方いたら教えてください...