我刚开始使用Android Studio 3.0.0,但每次尝试构建项目时都会出现此错误:
Error:Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
| \--- :app:compileDebugKotlin (*)
\--- :app:kaptDebugKotlin
\--- :app:dataBindingExportBuildInfoDebug (*)
(*) - details omitted (listed previously)
我正在使用
kapt "com.android.databinding:compiler:2.2.0"
在我使用之前
androidProcessor "com.android.databinding:compiler:2.2.0"
它工作得很好......我做错了什么?
谢谢!
答案 0 :(得分:78)
UPD:这是针对Android Gradle插件3.0.0-alpha3修复的,在您的项目根目录build.gradle
中,将buildscript
dependencies
更改为使用< / p>
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
这实际上是Kotlin Gradle插件1.1.2-4与Android Gradle插件3.0.0-alpha1互操作的一个错误,由任务的输入和输出设置(以及如何设置任务)引起与依赖关系相关联。)
感谢@VyacheslavGerasimov创建问题KT-17936。
作为临时解决方法,您可以尝试恢复Kotlin Gradle插件1.1.2-2并禁用增量编译:
在项目的根目录build.gradle
中,更改Kotlin Gradle插件的版本:
buildscript {
...
dependencies {
...
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-2'
}
}
将local.properties
添加到项目根目录,使用以下行:
kotlin.incremental=false
Kotlin Gradle插件1.1.2-2及以下版本的known issue与最新的AGP版本崩溃,禁用增量编译似乎可以解决这一崩溃问题。
答案 1 :(得分:17)
对于那些仍在寻找合适解决方案的人,Google已经在Android Studio 3.0 Canary 3版本中解决了这个问题。
2017年6月2日星期五
我们刚刚向Canary发布了Android Studio 3.0 Canary 3 开发频道。 Android Gradle Plugin 3.0.0-alpha3也已发布 通过maven.google.com。此版本修复了 Gradle , Kotlin , 和许多其他修复。我们继续修复Studio的所有区域中的错误 3.0,因为我们稳定了我们的功能,所以请继续传递反馈。
使用gradle配置:
build.gradle(项目)
buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
jcenter()
maven {
url 'https://maven.google.com'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
build.gradle(模块)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
dataBinding.enabled = true
}
dependencies {
kapt "com.android.databinding:compiler:3.0.0-alpha3"
}
答案 2 :(得分:16)
在模块级别的app .gradle中,您似乎需要3个gradle条目来添加数据绑定
apply plugin: 'kotlin-kapt'
android {
...
dataBinding {
enabled = true
}
}
dependencies {
......
kapt "com.android.databinding:compiler:$compiler_version"
}
请注意,我在项目级构建gradle中将编译器版本变为一个变量,因此可以从一个地方进行管理
默认为:ext.kotlin_version = '1.1.3-2'
我添加了括号语法:
ext{
kotlin_version = '1.1.3-2'
compiler_version = '3.0.0-beta6'
}
答案 3 :(得分:2)
我已经用Kotlin here
重新写了Blog for Data Binding android使用Classpath
classpath 'com.android.tools.build:gradle:3.0.0-beta2'
依赖
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
...
dataBinding {
enabled = true
}
}
dependencies {
......
kapt 'com.android.databinding:compiler:2.3.1'
}
有关详细信息,请查看此post
答案 4 :(得分:1)
如果您使用 Kotlin Gradle 插件 1.3 及更高版本,则无需指定 kapt "com.android.databinding:compiler:$plugin_version"
https://youtrack.jetbrains.com/issue/KT-32057
在 build.gradle 文件中指定 dataBinding
就足够了:
android {
...
dataBinding {
enabled = true
}
}
或
android {
...
buildFeatures {
dataBinding true
}
}