Android Studio 3.0.0'da Veri Bağlama ve Kotlin nasıl kullanılır?


100

Android Studio 3.0.0'ı yeni kullanmaya başladım, ancak projemi her oluşturmaya çalıştığımda şu hatayı alıyorum:

Error:Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
|    \--- :app:compileDebugKotlin (*)
\--- :app:kaptDebugKotlin
     \--- :app:dataBindingExportBuildInfoDebug (*)
(*) - details omitted (listed previously)

Ben kullanıyorum

kapt "com.android.databinding:compiler:2.2.0"

Kullanmadan önce

androidProcessor "com.android.databinding:compiler:2.2.0"

Ve gayet iyi çalışıyordu ... Neyi yanlış yapıyorum ??

Teşekkürler!


1
Bir hata gibi görünüyor, sorun yaratıldı: youtrack.jetbrains.com/issue/KT-17936
— Vyacheslav Gerasimov

Bu hata, herhangi bir veri bağlama olmadan bile ortaya çıkar. Sadece kotlin'in 1.1.2-4 sürümünü kullanırsınız ve 'kotlin-kapt' eklentisini uygularsınız. Ardından bu hatayı alırsınız Hata: Aşağıdaki görevler arasındaki döngüsel bağımlılık:: app: compileDebugKotlin \ ---: app: kaptDebugKotlin \ ---: app: compileDebugKotlin ( ) ( ) - ayrıntılar atlandı (daha önce listelendi)
— Arsenius

Yanıtlar:


21

Veri bağlama eklemek için app .gradle'da modül düzeyinde 3 gradle girişine ihtiyacınız var gibi görünüyor

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

Derleyici sürümünü, tek bir yerden yönetilebilmesi için proje düzeyinde derleme kademesinde bir değişken yaptığıma dikkat edin

varsayılan şuydu: ext.kotlin_version = '1.1.3-2'

Parantez sözdizimi ile ekledim:

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

1
Kotlin-kapt ve bu bağımlılık satırını eklemek için doğru cevap budur. En iyi cevap artık alakalı değil
— SpaceMonkey

Versiyon değişkenin kullanımını Beğendim
— Shirane85

Şunu alıyorum: - tüm sürümlerle [kapt] Bir istisna oluştu: java.lang.NullPointerException
— Pavel Zaitsev

@PavelZaitsev Bir süredir android stüdyosunu kullanmadım
— Rubber Duck

78

UPD: Bu, Android Gradle eklentisi 3.0.0-alpha3 için düzeltildi, yout proje kökünde build.gradle, buildscript dependencieskullanılacak

classpath 'com.android.tools.build:gradle:3.0.0-alpha3'

Bu aslında Kotlin Gradle eklentisi 1.1.2-4 ile Android Gradle eklentisi 3.0.0-alpha1 ile birlikte çalışmadaki bir hatadır, görevlerin giriş ve çıkışlarının nasıl ayarlandığından (ve dolayısıyla görevlerin nasıl bağlantılı olduğundan) bağımlı ilişki).

Teşekkür @VyacheslavGerasimov sorunu oluşturmak için KT-17936 .


Geçici bir çözüm olarak, Kotlin Gradle eklentisi 1.1.2-2'ye geri dönmeyi deneyebilir ve artımlı derlemeyi devre dışı bırakabilirsiniz:

Projenizin kök dizininde build.gradle, Kotlin Gradle eklentisinin sürümünü değiştirin:

buildscript {
    ...
    dependencies {
        ...
        classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-2'
    }
}

local.propertiesAşağıdaki satırla proje köküne ekleyin :

kotlin.incremental=false

Bir olduğunu bilinen bir sorundur 1.1.2-2 eklentisi ve en yeni AGP sürümleri ile çöker altında ve Kotlin Gradle artan derleme devre dışı bırakarak bu kilitlenme düzeltmek gibi görünüyor.


Gradle.properties demek istediğinize inanıyorum
— Leandro Borges Ferreira

1
@LeandroBorgesFerreira, bunlardan herhangi birini kullanabilirsiniz, çünkü Gradle local.propertiesdosyayı projelerinizde de algılar ve yorumlar . Belki yerel makine özellikleri local.propertiesiçin daha uygundur .
— kısayol tuşu

1
Bu, şu hataya yol açar: stackoverflow.com/questions/44056104/…
— gderaco

6
Aslında 1.1.2-3'e geri dönmek de iyi çalışıyor. Kotlin 1.1.2-4'ü kotlin-kapt eklentisiyle birlikte kullanırken Android Studio 2.3.2 ve gradle 2.3.2 ile aynı sorun
— Arsenius,

1
dayalı @hotkey issuetracker.google.com/issues/38447344 bu değil KOTLIN gradle eklentisi, Android eklenti bir konudur. Bir düzeltme yapıldı ve sonraki 3.0.0 alfa sürümünde piyasaya sürülmesi planlanıyor.
— Nimrod Dayan

17

Hala uygun bir çözüm arayanlar için, Google bu sorunu Android Studio 3.0 Canary 3 derlemesinde zaten çözdü .

2 Haziran 2017 Cuma

Android Studio 3.0 Canary 3'ü Canary ve Geliştirici Kanallarına yeni çıkardık. Android Gradle Eklentisi 3.0.0-alpha3 de maven.google.com üzerinden yayınlandı. Bu sürümde Gradle , Kotlin ve diğer birçok düzeltmede düzeltmeler var. Özelliklerimizi stabilize ederken Studio 3.0'ın tüm alanlarında hataları gidermeye devam ediyoruz, bu nedenle lütfen geri bildirimlerimizi iletmeye devam edin.

Çalışma kademeli konfigürasyon:

build.gradle (proje)

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 (modül)

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"
}

Android Studio 2.3.2'de bu sorun nasıl giderilir?
— Arsenius

Kotlin eklentisinin daha eski bir sürümünü artımlı yanlış ile kullanabilirsiniz. Önceki yanıtı "kısayol tuşu" ile kontrol edin
— Prokash Sarkar

1
Hayır, 1.1.2-4hala çalışmıyor. 1.1.2-2Build.gradle (modül) 'e kapt "com.android.databinding: compiler: 3.0.0-alpha3" kullanmalı ve ayrıca eklemelisiniz yoksa Çözümlenmemiş referans: veri bağlama elde edersiniz.
— 0leg

1.1.2-5'te de düzeltilmedi
— Daivid

2

Burada Kotlin ile Android için Veri Bağlama için Blog yazdım

Classpath kullan

classpath 'com.android.tools.build:gradle:3.0.0-beta2'

Bağımlılık

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'
}

daha fazla ayrıntı için bu gönderiye göz atın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.