LoginSignup
4
2

More than 3 years have passed since last update.

Kotlin Android Extensions から View Binding に置き換える

Posted at

今更ですが、Kotlin Android Extensions が非推奨になりましたね。
公式としては、View Binding を使うことが推奨されています。

./gradlew buildコマンドを実行すると、以下のような警告文が出力されます。

Warning: The 'kotlin-android-extensions' Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin.

修正方法

例えばapp/build.gradleが以下のように記載されていたとします。

app/build.gradle
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

android {
    ...
    androidExtensions {
        experimental = true
    }
    buildFeatures {
        dataBinding = true
    }
}
...

まず、androidExtensionsおよびid 'kotlin-android-extensions'を削除し、buildFeaturesviewBinding = trueを追記します。

app/build.gradle
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

android {
    ...
    buildFeatures {
        dataBinding = true
        viewBinding = true
    }
}
...

そして、ソースコード内で Kotlin Android Extensions を使用している箇所を View Binding に置き換えます。

// Reference to "name" TextView using synthetic properties.
name.text = viewModel.nameString

// Reference to "name" TextView using the binding class instance.
binding.name.text = viewModel.nameString

Parcelable を使用している場合

ソースコード内で@Parcelizeアノテーションを使用している場合は、pluginsid 'kotlin-parcelize'を追記します。

app/build.gradle
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-parcelize'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}
...

参考 URL

4
2
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
4
2