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.