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
8 Answers
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:
2Put 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 }
} 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 }
} 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 :)
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" 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' 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
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"
}