こんにちは、kazuです。
本日はJavaプロジェクトにkotlinファイルを導入したらdataBindingでビルドエラーが出て詰まってしまったので、備忘録になります。
はじめに
Androidのプロジェクトを作成する時にJavaかKotlin選びますよね?
その時に最初はJavaで作るか〜となってしばらくするとKotlin導入しようと思い立ち導入した時にdataBindingで出たエラーになります。
どのようなエラーか?
シンボル: クラス KotlinSampleActivity
場所: クラス KotlinSampleActivityBinding
エラー: Cannot resolve type 'activity'
エラー: cannot generate view binders android.databinding.tool.util.LoggedErrorException: failure, see logs for details.
Cannot resolve type 'activity'
なんか出てる。。。でひたすらググってみる。
切り分ける時
実装で切り分けるために以下のことをしてみました。
・何かKotlin側のコードに問題があるのでは?
ただレイアウトを表示させるようにするだけという対応にする。
結論:エラー解決ならず
・新しいJavaファイルでのActivity、レイアウトを作成する
→ Kotlinと同じ処理をJavaで書く
結論:上手くいく
最初は「???」となりました。。
だってJavaだけうまくいってKotilnはうまくいかないなぜと。。
そしてこのような記事に辿り着きましたJVMTargetのバージョンが低いのでは的な。
対応方法
ということで結論に入ると結論を言うとbuild.gradleの修正が必要でした。(JVMTargetは今回あまり関係ありませんでした。)
以下修正前と修正後になります。
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
}
plugins {
id 'com.android.application'
}
android{
・・・
}
dependencies{
・・・
}
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
// ↓ 追加した
id 'org.jetbrains.kotlin.android' version '1.8.21' apply false
}
plugins {
id 'com.android.application'
// ↓ 追加した
id 'org.jetbrains.kotlin.android'
}
android{
・・・
}
dependencies{
・・・
}
はい、と言うことでKotlinが読み込まれていないですね。
それが原因でした。Javaでプロジェクトを作成すると自分でgladleに追加しないといけないんですね。
以下Gradleのサイトです。
最後に
いかがでしたでしょうか?
設定を変更しなければいけなかったのは盲点でした。
もしJavaからKotlinへ移行を考えている方は注意してください!
最後までご覧いただきありがとうございました。