web-dev-qa-db-ja.com

Android St​​udio 3.0.0でデータバインディングとKotlinを使用する方法

Android St​​udio 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"

そして、それはうまく機能していました...私が間違っているのは何ですか??

ありがとう!

データバインディングを追加するには、モジュールレベルでapp .gradleに3つのgradleエントリが必要なようです

  1. apply plugin: 'kotlin-kapt'
  2. Android { ... dataBinding { enabled = true } }
  3. dependencies { ...... kapt "com.Android.databinding:compiler:$compiler_version" }

コンパイラバージョンをプロジェクトレベルのビルドグラドルで変数にしたため、1つの場所から管理できます。

デフォルト:ext.kotlin_version = '1.1.3-2'

ブラケット構文で追加しました:

ext{
    kotlin_version = '1.1.3-2'
    compiler_version = '3.0.0-beta6'
}
16
Rubber Duck

UPD:これはAndroid Gradleプラグイン3.0.0-alpha3で修正され、youtプロジェクトルートbuild.gradleで、buildscriptdependenciesをつかいます

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以前が最新のAGPバージョンでクラッシュし、インクリメンタルコンパイルを無効にするとそのクラッシュが修正されるようです。

78
hotkey

まだ適切なソリューションを探している人のために、Googleは Android Studio 3.0 Canary buildでこの問題を既に修正しています。

2017年6月2日金曜日

Android St​​udio 3.0 Canary 3をCanaryおよびDevチャンネルにリリースしました。 Android Gradleプラグイン3.0.0-alpha3もmaven.google.comからリリースされました。このリリースには、GradleKotlin、および他の多くの修正が含まれています。機能の安定化に伴い、Studio 3.0のすべての領域でバグの修正を続けていますので、引き続きフィードバックをお寄せください。

作業用グラドル構成:

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"
}
17
Prokash Sarkar

最近、KotlinでデータバインディングAndroidのブログを書いています here

クラスパスを使用

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

2
Imtiyaz Khalani