DSL 元素 'android.dataBinding.enabled' 已过时,已替换为 'android.buildFeatures.dataBinding'

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

构建项目时收到以下警告

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

我正在使用Android Studio Canary 6

Android Gradle Plugin 4.0.0-alpha05 开始,有一个名为 buildFeatures 的新块可以启用构建功能。

因此,为了使用新的 AGP 插件启用数据绑定,您需要在模块(例如:应用程序)级别 gradle 文件

中执行以下操作

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

参考:https://developer.android.com/studio/releases/gradle-plugin#buildFeatures

将其放入 build.gradle(应用程序级别)。它将适用于 android 大于或等于 4.0.0 的工作室版本。

android {
    buildFeatures{ 
        dataBinding true // for data binding 
        viewBinding true // for view binding
    }
}

Put this code in Gradle Scripts >> build.gradle(Module: appName.app)

buildTypes 之后,包含数据绑定代码

buildTypes {
       release {
           .......
          ........
       }
   }
 //here is the code...
   buildFeatures {
       dataBinding = true
   } 

就这些:)

出现这个警告是因为


    dataBinding {
        enabled=true
    }

    viewBinding {
        enabled=true
    }

此代码风格已弃用,将从 gradle 版本 5 中删除 现在,如果您仍想使用它,那么您可以使用 androidx 旧版支持依赖项

在应用层 build.gradle

implementation 'androidx.legacy:legacy-support-v4:1.0.0'

否则您可以使用新的代码风格来启用数据绑定和视图绑定

像这样

android {

  buildFeatures {

         dataBinding = true

         // for view binding:
         // viewBinding = true
    }
}

1- 在 buildFeatures 下添加数据绑定,如下所示:

android {
...
buildFeatures {
        dataBinding true
    }
...
}

2- 将匕首版本更改为 2.31.2:

annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
implementation "com.google.dagger:dagger:$daggerVersion"

3- 也将 butterKnife 版本更改为 10.2.3:

implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'

如果您正在寻找新功能 viewBinding,请尝试 Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

这是 Kotlin

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

但是,要使用默认的 android 数据绑定

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

另外,注意使用

kapt "com.android.databinding:compiler:4.0.0"

以下作品:

android { 编译SDK版本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"
}
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
    }

看上面的注释,应该很清楚了