如何在Android Studio 3.0.0中使用数据绑定和Kotlin
我刚开始使用Android Studio 3.0.0,但每次尝试构build我的项目时都会出现此错误:
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"
它工作得很好…我做错了什么?
谢谢!
UPD:这是固定的Android Gradle插件3.0.0-alpha3,在你的项目根build.gradle
,更改buildscript
dependencies
使用
classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
这实际上是Kotlin Gradle插件1.1.2-4与Android Gradle插件3.0.0-alpha1的互操作中的一个错误,这是由如何设置任务的input和输出(以及如何连接任务依赖关系)。
感谢@VyacheslavGerasimov创build问题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及以下崩溃与最新的AGP版本,禁用增量编译似乎修复了崩溃。
对于那些仍在寻求合适解决scheme的人来说,Google已经在Android Studio 3.0 Canary 3 build中解决了这个问题。
2017年6月2日星期五
我们刚刚发布了Android Studio 3.0 Canary 3到Canary和Dev Channels。 Android Gradle Plugin 3.0.0-alpha3也通过maven.google.com发布。 此版本修复了Gradle , Kotlin和其他许多修补程序。 我们继续修复Studio 3.0所有领域的bug,因为我们稳定了我们的function,所以请继续传递反馈意见。
工作gradleconfiguration:
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" }
看来你需要在模块级应用程序.gradle中的3个gradle条目添加数据绑定
-
apply plugin: 'kotlin-kapt'
-
android { ... dataBinding { enabled = true } }
-
dependencies { ...... kapt "com.android.databinding:compiler:$compiler_version" }
请注意,我在编译阶段将编译器版本变成了一个variables,因此可以从一个地方进行pipe理
默认是: ext.kotlin_version = '1.1.3-2'
我添加了括号语法:
ext{ kotlin_version = '1.1.3-2' compiler_version = '3.0.0-beta6' }
我最近在这里写了博客数据绑定安卓与Kotlin
使用类path
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' }
更详细的检查这个职位