今天早上我将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:忘了说,我试过清理/重建/无效缓存&重启/删除构建文件夹。
答案 0 :(得分:13)
在更新到Android Studio 3.2之后,此行对我有用。我的项目中同时运行Java和Kotlin代码(编译器)。
将以下内容添加到gradle.properties中: android.databinding.enableV2 = false
原因:
数据绑定V2
数据绑定V2现在默认启用,并且与V1兼容。这意味着,如果您具有使用V1编译的库依赖项,则可以将它们与使用数据绑定V2的项目一起使用。但是请注意,使用V1的项目不能使用V2编译的依赖项。
答案 1 :(得分:4)
这可能不是最有用的答案,但就我而言,这是由于代码中的完全个不相关的问题引起的。
我收到了51个error: cannot find symbol: DataBindingComponent
错误(在每个数据绑定生成的类中),并且花了很长时间才删除对XML和ViewModel代码的更改,试图找出导致错误的原因。
问题实际上出在我对“房间”模型进行的无效更改中。我想所有数据绑定错误都可能混淆了Room错误,但是终端中的Debug / Scan日志没有指向它。
因此,请查看所有最新代码,如果遇到此问题,甚至看似无关的更改。
编辑:有关混淆其他kapt问题(例如Room / Dagger)的这些数据绑定错误,请参见此SO post
答案 2 :(得分: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
并构建项目。它对我有用。
答案 3 :(得分:3)
从Android Studio 3.0.1更新到3.1.0时,您需要更改三件事。这如下所列
1)您需要更改distributionUrl中的 gradle.wrapper-properties 。您的网址必须为 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)第三件也是最后一件事需要更新kotlin gradle插件 classpath“org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.30”到 classpath“org。 jetbrains.kotlin:kotlin-gradle-plugin:1.2.31“在项目级别的gradle依赖性。您还可以更新build gradle版本,如下图所示。
完成上述所有步骤后,只需清理构建和重建项目。希望它能解决你的问题。
谢谢! 快乐的编码!!
答案 4 :(得分:3)
只需在Vec<&str>
文件中注释这些行就可以帮助我解决问题
graddle-wrapper.properties
答案 5 :(得分:3)
好的,那些想知道我是如何解决这个问题的人。 解决方案很简单,但可能你不会喜欢它。
我必须在项目根包中移动我在数据绑定中使用的所有类,然后再开始工作。
答案 6 :(得分:2)
要在Java项目中修复此错误,您需要从27.0.2
回滚到supportLibraryVersion - 27.1.0
适用于AndroidStudio 3.1和com.android.tools.build:gradle:3.1.0
等待Google修复
答案 7 :(得分:1)
这些解决方案中没有一个对我有用,因此我在android studio 3.2 beta 4版本中发现了它的错误:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) as! sampleTableViewCell
cell.sample.text = "sample"
cell.sample.delegate = self
return cell
}
在我同步之后,重建并正确运行所有内容
答案 8 :(得分:1)
在grade.properties中添加这些行有助于我保存问题
android.enableExperimentalFeatureDatabinding = true
android.databinding.enableV2=true
答案 9 :(得分:1)
与@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
答案 10 :(得分:0)
如果使用数据绑定,请检查xml文件。 我今天浪费了一个小时,因为我重命名了一个类,而Android Studio决定对我的xml文件进行更改。 例如,我有一个名为LiveGameModel的类,并将其重命名为LiveGameView,AS决定在与该视图无关的xml文件中进行更改。我知道,这个错误没有道理。
答案 11 :(得分:0)
这是Android Studio和数据绑定中的一个非常棘手的错误!我必须整天测试所有这些提议的解决方案以及其他一些解决方案,以最终至少使数据绑定编译。
所以我不得不禁用gradle.properties
文件中的所有databindind设置,只需注释以下行或将其删除:
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工程师非常擅长创建bug!
答案 12 :(得分:0)
我遇到了同样的问题。通过将google()添加到Project build.gradle
来修复它allprojects {
repositories {
jcenter()
**google()**
}
}
确保添加allProjects
答案 13 :(得分:0)
这似乎很奇怪,但是我浪费了几个小时来面对错误,在检查了我的最新更改后,我发现它与Room数据库中的错误有关。
我声明了Dao接口之一,但忘了用@Dao
对其进行注释。
修复数据绑定错误后,已修复。
我猜这是android studio的错误。
答案 14 :(得分:0)
全部优先
1.在您的根目录布局中添加“布局”
答案 15 :(得分:0)
在gradle.properties中添加:
android.databinding.enableV2=true
在build.gradle(module:app)文件中添加:
dataBinding {enabled = true}
清理项目并重新构建它。
它将开始工作...
答案 16 :(得分:0)
答案 17 :(得分:0)
只需连接到Internet并使用gradle文件同步项目。会的。
答案 18 :(得分:-1)
在房间实体类中进行了一些修改后,我得到了这个错误。所以我觉得这个错误与Room库有关。尝试还原Room类和实体中的更改,或为它们添加注释以查看错误是否已解决。
在我的情况下,由于我是从插入和更新方法返回int
而出现错误。这些方法不应返回任何内容。因此,删除return
可以修复错误。
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(student: Student):Int
到
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(student: Student)
答案 19 :(得分:-7)
我遇到了同样的问题。我在gradle属性中禁用数据绑定并且它工作正常。 dataBinding.enabled = false