DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'
AndroidAndroid DatabindingAndroid Problem Overview
Gets following warning when building the project
DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'.
I am using Android Studio Canary 6
Android Solutions
Solution 1 - Android
Starting from Android Gradle Plugin 4.0.0-alpha05
there is a new block called buildFeatures
to enable build features.
So in order to enable databinding with new AGP plugin you have do like following in module (ex: app) level gradle file
build.gradle ( Groovy DSL )
// shorter version
// android.buildFeatures.dataBinding true
// longer version
android {
buildFeatures {
dataBinding true
// for view binding:
// viewBinding true
}
}
build.gradle.kts ( Kotlin DSL )
// shorter version
// android.buildFeatures.dataBinding = true
// longer version
android {
buildFeatures {
dataBinding = true
// for view binding:
// viewBinding = true
}
}
Reference: https://developer.android.com/studio/releases/gradle-plugin#buildFeatures
Solution 2 - Android
Put it in build.gradle(app level).It will work with android studio version greater than or equal to 4.0.0.
android {
buildFeatures{
dataBinding true // for data binding
viewBinding true // for view binding
}
}
Solution 3 - Android
This warning occurs because
dataBinding {
enabled=true
}
viewBinding {
enabled=true
}
This code style is deprecated and it will remove from the gradle version 5 now if you still want to use this then you can use androidx legacy support dependencies
in app lavel build.gradle
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
otherwise you can use new code style to enable data binding and view binding
like this
android {
buildFeatures {
dataBinding = true
// for view binding:
// viewBinding = true
}
}
Solution 4 - Android
> Put this code in Gradle Scripts >> build.gradle(Module: appName.app)
after the buildTypes, include the data biding code
buildTypes {
release {
.......
........
}
}
//here is the code...
buildFeatures {
dataBinding = true
}
That's all :)
Solution 5 - Android
If you're looking for the new feature viewBinding
, try this for Groovy
android {
...
buildFeatures {
viewBinding true
}
}
and this for Kotlin
android {
...
buildFeatures {
viewBinding true
}
}
But, to use the default android data binding
android {
...
buildFeatures {
dataBinding true
}
}
also, be aware to use
kapt "com.android.databinding:compiler:4.0.0"
Solution 6 - Android
1- add dataBinding under buildFeatures like this:
android {
...
buildFeatures {
dataBinding true
}
...
}
2- Change dagger version to 2.31.2:
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
implementation "com.google.dagger:dagger:$daggerVersion"
3- Change also butterKnife version to 10.2.3:
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
Solution 7 - Android
buildFeatures {
//just for dataBinding ,It has nothing to do with viewBinding
dataBinding = true
//just for viewBinding ,It has nothing to do with dataBinding
viewBinding = true
}
Look at the notes above,so it should be very clear
Solution 8 - Android
The following works:
android { compileSdkVersion 30 buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.poet.navviewmodeljave"
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
//dataBinding.enabled true
buildFeatures.dataBinding
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}