【问题标题】:Android Data Binding NoSuchMethodErrorAndroid 数据绑定 NoSuchMethodError
【发布时间】:2016-03-06 08:32:34
【问题描述】:

我无法将我的项目设置为使用 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"
    ...
}

当我构建时,我得到这个错误:

[数据绑定插件]:设置数据绑定失败

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

因为我使用的是 AndroidAnnotations。

【问题讨论】:

  • 删除类路径“com.android.databinding:dataBinder:1.0-rc4”。

标签: java android data-binding


【解决方案1】:

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

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

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

【讨论】:

  • 我已经尝试过了,但得到了同样的错误。看看我的编辑。
  • 嗯...你还有apply plugin: 'com.android.databinding'吗?如果是这样,您应该删除它。您可能在根 build.gradle 中有一个流浪的 dependencies { classpath 'com.android.databinding:dataBinder:1.0-rc4' }。如果不是这样,也许您可​​以发布一个我可以查看的项目。
【解决方案2】:

虽然乔治的回答是正确的,但我认为明确每个 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 作为 Android gradle 的一部分发布 插件。

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

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 2019-01-24
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2021-05-24
    • 2020-11-12
    • 2016-06-19
    相关资源
    最近更新 更多