DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'

AndroidAndroid Databinding

Android 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"
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser158View Question on Stackoverflow
Solution 1 - Androiduser158View Answer on Stackoverflow
Solution 2 - AndroidDinesh JangirView Answer on Stackoverflow
Solution 3 - AndroidArun AdityaView Answer on Stackoverflow
Solution 4 - AndroidDayo JaiyeView Answer on Stackoverflow
Solution 5 - AndroidAmjad AlwarehView Answer on Stackoverflow
Solution 6 - AndroidHoussin BoullaView Answer on Stackoverflow
Solution 7 - AndroidChris.heView Answer on Stackoverflow
Solution 8 - AndroidJinView Answer on Stackoverflow