Android Studio在3.1.0更新后无法生成数据绑定
今天早上,我将android studio从3.0.1升级到了3.1.0。在将Android Studio在3.1.0更新后无法生成数据绑定,android,android-studio,android-studio-3.1,Android,Android Studio,Android Studio 3.1,今天早上,我将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/sou
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:忘了说,我试过清理/重建/失效缓存并重新启动/删除构建文件夹。从Android Studio 3.0.1更新到3.1.0时,需要更改三件事。如下所列 1) 您需要在distributionUrl中的gradle.wrapper属性中进行更改。您的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) 第三件也是最后一件事是需要更新kotlin gradle plug-inclasspath“org.jetbrains.kotlin:kotlin gradle plugin:1.2.30”到classpath“org.jetbrains.kotlin:kotlin gradle plugin:1.2.31”。您还可以更新build gradle版本,如下图所示 完成以上步骤后,只需清理构建和重建项目。希望它能解决你的问题 谢谢!!
快乐编码 要修复Java项目中的此错误,您应该从
27.1.0
回滚到supportLibraryVersion-27.0.2
可与AndroidStudio 3.1和com.android.tools配合使用。构建:gradle:3.1.0
在等待谷歌的修复时,我遇到了同样的问题。我在gradle properties中禁用了数据绑定,它成功了
dataBinding.enabled=false
好的,那些想知道我是如何解决这个问题的人。
解决方案很简单,但您可能不喜欢它
在项目根包中的数据绑定中使用的所有类重新开始工作后,我必须移动它们。在grade.properties中添加这些行帮助我解决了这个问题
android.enableExperimentalFeatureDatabinding = true
android.databinding.enableV2=true
我也有同样的问题。通过将google()添加到Project build.gradle中修复了此问题
allprojects {
repositories {
jcenter()
**google()**
}
}
确保您添加了所有项目这是android studio和数据绑定的一个非常棘手的错误!我不得不花一整天的时间测试所有这些建议的解决方案和其他一些解决方案,以最终使数据绑定至少能够编译 因此,我必须禁用
gradle.properties
文件中的所有数据绑定设置,只需注释这些行或删除它们:
android.databinding.enableV2 = true
android.enableExperimentalFeatureDatabinding = true
从build.gradle
中删除buildToolsVersion
,并具有以下sdk版本:
compileSdkVersion 27
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
再加上几次清理/重建,使缓存失效并重新启动,最终编译完成。
因为工程师擅长制造bug 这些解决方案中没有一个适合我,所以我在android studio的3.2 beta 4版本中发现了它的缺陷:
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
}}
在此之后,我将同步、重建并正确运行所有内容如果使用数据绑定,请检查xml文件。 今天我浪费了一个小时,因为我重命名了一个类,Android Studio决定对我的xml文件进行更改。
例如,我有一个名为LiveGameModel的类,我重命名为LiveGameView,并决定对与此视图无关的xml文件进行更改。我知道,这个bug毫无意义。如果你在android studio 3.2上使用kotlin, 用这条线更换分配器RL
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
您将被要求将构建工具版本更改为适当的版本。
完成此操作后,请从app-level build.gradle文件中删除此行
kapt 'com.android.databinding:compiler:3.0.1
然后建造这个项目。这对我很有用。这可能不是最有用的答案,但在我的情况下,这是由代码中一个完全无关的问题引起的 我收到51个
错误:找不到symbol:DataBindingComponent
错误(在每个数据绑定生成的类中),我花了很长时间删除对XML和ViewModel代码的更改,试图找到导致错误的原因
问题其实在于我做了一个无效的房间模型。我猜房间错误可能被所有数据绑定错误混淆了,但是终端中的调试/扫描日志没有指向它
因此,如果您遇到此问题,请查看所有最近的代码,甚至是看似无关的更改
编辑:关于这些数据绑定错误混淆了其他kapt问题(如房间/匕首)在Android Studio 3.2更新后,这一行对我有用。我的项目中同时运行Java和Kotlin代码(编译器) 将以下内容添加到gradle.properties: android.databinding.enableV2=false
**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
原因:
数据绑定V2
数据绑定V2现在默认启用,并且与V1兼容。这意味着,如果您有使用V1编译的库依赖项,则可以将它们用于使用数据绑定V2的项目。但是,请注意,使用V1的项目不能使用使用V2编译的依赖项
来源(发行说明):这似乎很奇怪,但我在面对错误时浪费了几个小时,在检查了我的最新更改后,我发现它与Room数据库中的错误有关 我声明了一个Dao接口,但忘了用
@Dao
来声明它
修复后,数据绑定错误已修复
我猜这是android studio的一个bug 我遇到了与@Marian Pavel相同的问题,我的项目无法编译数据绑定组件,除非我在根文件夹中有用于数据绑定的类 我通过以下操作解决了此问题: 安卓工作室: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
我犯了这个错误
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(student: Student)
#android.enableExperimentalFeatureDatabinding = true
#android.databinding.enableV2=true