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

Posted

技术标签:

【中文标题】DSL 元素 \'android.dataBinding.enabled\' 已过时,已替换为 \'android.buildFeatures.dataBinding\'【英文标题】:DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'DSL 元素 'android.dataBinding.enabled' 已过时,已替换为 'android.buildFeatures.dataBinding' 【发布时间】:2020-04-10 21:58:37 【问题描述】:

在构建项目时收到以下警告

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

我正在使用Android Studio Canary 6

【问题讨论】:

【参考方案1】:

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

【讨论】:

对我有用的是 buildFeatures viewBinding = true 为了摆脱构建警告,您还需要删除旧的“dataBinding enabled = true ”块。【参考方案2】:

放入build.gradle(app level)中,android studio版本大于等于4.0.0即可使用。

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

【讨论】:

【参考方案3】:

出现此警告是因为


    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
    

【讨论】:

【参考方案4】:

将此代码放入Gradle Scripts >> build.gradle(Module: appName.app)

buildTypes之后,包含数据出价代码

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

就是这样:)

【讨论】:

【参考方案5】:

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

android 
    ...
    buildFeatures 
        viewBinding true
    

这是Kotlin

android 
    ...
    buildFeatures 
        viewBinding true
    

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

android 
    ...
    buildFeatures 
        dataBinding true
    

还有,注意使用

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

【讨论】:

【参考方案6】:

1- 在 buildFeatures 下添加 dataBinding 如下:

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'

【讨论】:

【参考方案7】:
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
    

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

【讨论】:

【参考方案8】:

以下作品:

机器人 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"

【讨论】:

以上是关于DSL 元素 'android.dataBinding.enabled' 已过时,已替换为 'android.buildFeatures.dataBinding'的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 capybara DSL 测试 Select2 元素?

金融领域的 DSL(领域特定语言)

[转] 在Jenkins Pipeline DSL中 遍历 groovy list

Android Gradle开发指南

Jenkins job DSL - 每当构建 Ivy 依赖项时构建

Camel Rest XML DSL分离文件夹结果Unmarshall Exception