🦁
Kotlin Android Extensions から View Binding に置き換える
今更ですが、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'
を削除し、buildFeatures
にviewBinding = 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
アノテーションを使用している場合は、plugins
にid 'kotlin-parcelize'
を追記します。
app/build.gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-parcelize'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
...
Discussion