41

今天早上我更新了android studio从 3.0.1 到 3.1.0。更新gradle到最新版本后,我仍然收到有关数据绑定的构建错误。

我的gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

我所有的错误都如下所示:

/Users/mp/Documents/GitHub/projectx/app/build/generated/source/dataBinding/baseClasses/Staging/debug/me/projectx/asdasd/databinding/GridItemActivityTypeBinding.java:57: error: cannot find symbol
      @Nullable DataBindingComponent component) {
                ^
  symbol:   class DataBindingComponent
  location: class GridItemActivityTypeBinding

有谁知道为什么我的数据绑定不会在 android studio 3.1 更新后生成?提前致谢

编辑1:忘了说,我试过清理/重建/无效缓存和重新启动/删除构建文件夹。

4

20 回答 20

21

在更新到 Android Studio 3.2 之后,这条线对我有用。我的项目中同时运行了 Java 和 Kotlin 代码(编译器)。

将以下内容添加到您的 gradle.properties:android.databinding.enableV2=false

原因:

数据绑定 V2

Data Binding V2 现在默认启用并与 V1 兼容。这意味着,如果您有使用 V1 编译的库依赖项,则可以将它们与使用 Data Binding V2 的项目一起使用。但是请注意,使用 V1 的项目不能使用使用 V2 编译的依赖项。

来源(发行说明):https ://developer.android.com/studio/releases/

于 2018-09-28T07:06:48.770 回答
5

只是在文件中注释这些行graddle-wrapper.properties帮助我解决了我的问题

#android.enableExperimentalFeatureDatabinding = true
#android.databinding.enableV2=true
于 2019-07-30T07:32:07.463 回答
4

如果您在 android studio 3.2 上使用 kotlin,请将 distributionurl 替换为这一行

distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

并且您将被要求将构建工具版本更改为适当的版本。完成后,从应用程序级别的 build.gradle 文件中删除此行

kapt 'com.android.databinding:compiler:3.0.1

并构建项目。它对我有用。

于 2018-09-25T10:59:36.373 回答
4

这可能不是最有用的答案,但就我而言,这是由我的代码中一个完全不相关的问题引起的。

我收到了 51 个error: cannot find symbol: DataBindingComponent错误(在每个单独的数据绑定生成的类中),我花了很长时间删除对我的 XML 和 ViewModel 代码的更改,试图找出导致它的原因。

问题实际上在于我做了一个房间模型的无效更改。我猜可能所有数据绑定错误都混淆了 Room 错误,但终端中的调试/扫描日志并没有指向它。

因此,如果遇到此问题,请查看所有最近的代码,甚至是看似无关的更改。

编辑: 请参阅这篇关于这些数据绑定错误混淆其他kapt问题(如 Room / Dagger)的帖子

于 2018-09-27T00:56:52.790 回答
2

从 Android Studio 3.0.1 更新到 3.1.0 时,您需要更改三件事。这是如下所列

1)您需要更改distributionUrl中的gradle.wrapper-properties。您的 URL 必须是distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip

在此处输入图像描述在此处输入图像描述

2) 需要将应用级 gradle 文件中的数据绑定依赖关系从 kapt 'com.android.databinding:compiler:3.0.1' 更新为 kapt 'com.android.databinding:compiler:3.1.0'

在此处输入图像描述

如果你正在使用 kotlin 进行开发,

3)第三也是最后一件事是需要将 类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.30”中的kotlin gradle插件更新为 类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.31 “在项目级别的 gradle 依赖项中。您还可以更新构建 gradle 版本,如下图所示。

在此处输入图像描述

毕竟以上步骤只是清理构建和重建项目。希望它能解决您的问题。

谢谢!!编码快乐!!

于 2018-03-27T13:56:30.233 回答
2

好的,所以那些想知道我是如何解决这个问题的人。解决方案非常简单,但您可能不会喜欢它。

我不得不移动我在项目根包中的数据绑定中使用的所有类,并且在它再次开始工作之后。

于 2018-04-03T06:58:29.463 回答
2

这些解决方案都不适合我,所以我在 3.2 beta 4 版本的 android studio 中发现了它的错误:

buildscript {

repositories {
...
}
dependencies {
    //classpath "com.android.tools.build:gradle:3.2.0-beta04"  // buggy databinding
    classpath "com.android.tools.build:gradle:3.1.3" // working
}}

在此之后我同步,重建并正确运行everyting

于 2018-07-26T09:27:32.020 回答
2

我遇到了与@Marian Pavel 相同的问题,我的项目无法编译数据绑定组件,除非我在根文件夹中有用于数据绑定的类。

我通过这样做解决了这个问题:

Android Studio:3.2.1 稳定版

**project build.gradle**
classpath 'com.android.tools.build:gradle:3.2.1'

**module build.gradle**
apply plugin: 'kotlin-kapt'
kapt "androidx.databinding:databinding-compiler:3.2.1"

**gradle.properties**
android.databinding.enableV2=false
于 2018-12-05T02:33:55.573 回答
1

要修复 Java 项目中的此错误,您应该回滚到 supportLibraryVersion -27.0.227.1.0 Works fine with AndroidStudio 3.1 和com.android.tools.build:gradle:3.1.0

等待谷歌的修复

于 2018-03-29T15:18:59.180 回答
0

在grade.properties 中添加这些行帮助我解决了这个问题

android.enableExperimentalFeatureDatabinding = true
android.databinding.enableV2=true
于 2018-04-04T11:02:17.537 回答
0

我遇到了同样的问题。通过将 google() 添加到 Project build.gradle 来修复它

allprojects {
    repositories {
        jcenter()
        **google()**
    }
}

确保添加所有项目

于 2018-04-08T16:01:55.250 回答
0

这是 android studio 和数据绑定的一个非常棘手的错误!我不得不测试所有这些建议的解决方案,甚至一整天,最终使数据绑定至少可以编译。

所以我不得不禁用gradle.properties文件中的所有数据绑定设置,只需注释这些行或删除它们:

android.databinding.enableV2 = true
android.enableExperimentalFeatureDatabinding = true

buildToolsVersion从中删除build.gradle并具有以下 sdk 版本:

compileSdkVersion 27
defaultConfig {
    minSdkVersion 21
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

加上几个更干净/重建无效缓存并重新启动,它终于编译了。AS 工程师擅长创造错误!

于 2018-06-23T17:36:41.677 回答
0

如果您使用数据绑定,请检查您的 xml 文件。我今天浪费了一个小时,因为我重命名了一个类,Android Studio 决定对我的 xml 文件进行更改。例如,我有一个名为 LiveGameModel 的类,我重命名为 LiveGameView,AS 决定在 xml 文件中进行与该视图无关的更改。我知道,这个错误没有意义。

于 2018-08-20T17:41:22.200 回答
0

这可能看起来很奇怪,但我浪费了几个小时来面对这个错误,在检查了我的最新更改后,我发现它与 Room 数据库中的错误有关。

我声明了一个 Dao 接口,但忘记用@Dao.

修复后,数据绑定错误已修复。

我想这是android studio的一个错误。

于 2018-10-19T09:56:23.570 回答
0

在 Room Entity 类中进行一些修改后,我得到了这个错误。所以我觉得这个错误与 Room 库有某种关系。尝试恢复 Room 类和实体中的更改或评论它们以查看错误是否已修复。

就我而言,出现错误是因为我int从插入和更新方法返回。这些方法不应该返回任何东西。所以删除return修复了错误。

@Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(student: Student):Int

@Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(student: Student)
于 2019-03-22T08:01:59.637 回答
0

首先
1. 将“布局”添加到您的根布局

  1. Build -> Make Project(用于添加“布局”后创建生成类)
  2. //绑定私有lateinit var binding:ActivityLoginBinding
  3. 在 oncreate 视图中 //setContentView(R.layout.activity_login) 绑定 = DataBindingUtil.setContentView(this@LoginActivity,R.layout.activity_login)
于 2019-03-28T03:43:21.277 回答
0
  • 在 gradle.properties 添加:
    android.databinding.enableV2=true

  • 在 build.gradle(module:app) 文件中添加:
    dataBinding {enabled = true}

  • 清理项目并重新构建它。

它将开始工作...

于 2019-06-04T10:18:33.350 回答
0

我在将 gradle 更新到 3.4.2 时得到了这个。您需要做的就是删除 java.lang 的 import 语句。

注意: Android Studio 尚未处理导入,因此导入变量的自动完成功能可能无法在您的 IDE 中运行。您的应用程序仍然可以编译,您可以通过在变量定义中使用完全限定名称来解决 IDE 问题。

来源:https ://developer.android.com/topic/libraries/data-binding/expressions#import-classes

于 2019-07-26T13:22:10.537 回答
0

只需连接到互联网并将项目与 gradle 文件同步即可。会的。

于 2020-05-29T13:24:15.990 回答
-11

我遇到了同样的问题。我在 gradle 属性中禁用了数据绑定,它起作用了。dataBinding.enabled = false

于 2018-04-01T21:18:21.360 回答