【问题标题】:databinding does not exist: How to solve it?数据绑定不存在:如何解决?
【发布时间】:2017-03-19 08:23:04
【问题描述】:

我正在开发一个带有数据绑定的 Android 应用程序,但总是出现下一个错误:

错误:my.package.databinding不存在。

这是我在项目级别的build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

我还在模块级别的build.gradle 文件中启用了绑定。

现在我的问题是,为什么会出现这个错误,我该如何解决?

【问题讨论】:

    标签: android data-binding


    【解决方案1】:

    基于SO上的类似问题,原因可能与android数据绑定无关,而是由于错误调用变量如issue或其他一些因素如other issue。如果这些链接都没有帮助,您应该提供更多详细信息。

    【讨论】:

      【解决方案2】:

      如果您的项目无法编译,通常会出现此问题。 Android 数据绑定应该在命名包中生成代码,但如果项目一开始没有编译,它就不能这样做。

      要解决这个问题,请将您的项目带到可以编译的位置。如有必要,请为此关闭数据绑定。

      【讨论】:

      • 虽然我的项目已编译,但没有绑定,只是禁用->编译->重新启用并再次编译对我的项目有效
      【解决方案3】:

      我在 Android Studio 2.3 的一个包含 4 个模块的项目中遇到了这个问题,这是 @F43nd1r 指出的,但我想记录一下我为解决这个问题所做的工作。

      4 个模块中的一个在 Gradle 文件中有一个较旧的 Android 支持库,而另外 3 个是最新的。这就是阻止项目正确编译并导致数据绑定错误的原因。

      困难的部分是你不知道这一点,除非你打开每个build.gradle 文件并查看是否显示错误。它在编译时没有显示错误。

      实际上,我将此区域更新为较新的版本号以匹配其他 3 个模块 build.gradle 文件。

      dependencies {
          ...
          compile 'com.android.support:appcompat-v7:25.2.0'
          compile 'com.android.support:support-v4:25.2.0'
          compile 'com.android.support:recyclerview-v7:25.2.0'
          compile 'com.android.support:design:25.2.0'
          ...
      }
      

      【讨论】:

      • 在项目级别的 build.gradle 文件中定义支持库版本将有助于保持模块同步
      • 在我的情况下,项目已编译,但直到 build.gradle 中的模块 'com.android.tools.build:gradle' 更新后问题才得到解决。
      【解决方案4】:

      检查您的 xml 文件并评论您使用过的任何 @{},除非您手头确实准备好数据。如果没有数据,您将一次又一次地遇到此错误。

      【讨论】:

        【解决方案5】:
        dataBinding {
            enabled = true
        }
        

        在 app build.gradle 文件中启用数据绑定。它的工作

        【讨论】:

          【解决方案6】:

          要查看错误,只需在应用的 build.gradle 中编辑这些代码行:

          dataBinding {
          enabled = false
          } 
          

          这样,构建控制台中的最后一个错误就是实际错误。因为从第一个错误到倒数第二个错误,都与未生成数据绑定类有关,正是因为我们禁用了它。

          一旦发现错误,您将再次输入:

          dataBinding {
          enabled = true
          } 
          

          【讨论】:

          • 这个标签对我来说没有任何意义
          【解决方案7】:

          对我来说,除了一个之外什么都不起作用:重命名的 XML 绑定类 我之前尝试过的: 关闭/打开视图绑定 重命名文件夹 重新安装模块 重命名模块

          【讨论】:

            【解决方案8】:

            在删除项目和子模块的构建文件夹、制作、重建等之后,唯一对我有用的是:

            创建一个新的布局

            我认为生成器中有些东西搞砸了,并且会刷新它(这里完全是猜测)

            【讨论】:

              【解决方案9】:

              记得添加

              apply plugin: 'kotlin-android'
              
              apply plugin: 'kotlin-android-extensions'
              
              apply plugin: 'kotlin-kapt'
              
              android {
                  ...
                  buildFeatures {
                      viewBinding true
                      dataBinding true
                  }
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-03-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-11-20
                • 2020-02-20
                相关资源
                最近更新 更多