How to disable the generating of synthetic view properties by the Kotlin Android extensions plugin
There is a features
property in the androidExtensions
DSL that allows you to provide a list of features to enable. Currently, there is only two available, parcelize
and views
. To disable synthetic view properties, add this to your build.gradle
:
android {
// ...
}
androidExtensions {
features = ["parcelize"]
}
Source: https://github.com/JetBrains/kotlin/blob/6bef27e1e889b17ae84dd2ff99881727f13ac3e5/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt#L57
Nowadays, android-extensions plugin is discontinued so the best solution will be to just remove this plugin by removing apply plugin: 'kotlin-android-extensions'
from your build.gradle
.
Instead of synthetics we should use ViewBinding or DataBinding.
As explained in the first link, if you're also using parcelizer, you just need to change android-extensions
plugin to kotlin-parcelize
and change the import statement import kotlinx.android.parcel.Parcelize
for import kotlinx.parcelize.Parcelize
wherever is needed.
More info to migrate from android-extensions to JetPack here.