Android 数据绑定 NoSuchMethodError

Android Data Binding NoSuchMethodError

我无法设置我的项目以使用 Android 数据绑定。这是我的 build.gradle:

apply plugin: 'com.android.databinding'


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0-beta2'
        classpath "com.android.databinding:dataBinder:1.0-rc4"
    }
}

android {
    ...
    dataBinding {
        enabled = true
    }

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    ...
}

构建时出现此错误:

[data binding plugin]: failed to setup data binding

java.lang.NoSuchMethodError: android.databinding.tool.LayoutXmlProcessor.(Ljava/lang/String;Ljava/util/List;Landroid/databinding/tool/writer/JavaFileWriter;IZ)V

编辑

我修改了build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

但我仍然得到同样的错误。我也有这个 apt 配置:

apt {
    arguments {
        androidManifestFile variant.outputs[0].processResources.manifestFile
    }
}

因为我正在使用 Android注释。

您现在应该使用 1.5.0 进行设置,并且没有显式数据绑定导入:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

Android Data Binding 1.0 作为 Android gradle 插件的一部分发布。

虽然 George 的回答是正确的,但我认为弄清楚每个 build.gradle 文件中应该包含什么内容很重要。

所以,在项目的 build.gradle 文件中我们应该有:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

并且在应用程序的 build.gradle 文件中应该有:

apply plugin: 'com.android.application'
// No need to add it as a plugin
// apply plugin: 'com.android.databinding'

android {
    ...
    dataBinding {
        enabled = true
    }

    compileSdkVersion <latest>
    buildToolsVersion <latest>
    ...
}

我们不需要在应用程序的 build.gradle 文件中添加 apply plugin: 'com.android.databinding',因为正如乔治所说:

Android Data Binding 1.0 was released as part of the Android gradle plugin.

查看 Data Binding Guide 了解更多详情。