Compilateur de pièces Jetpack compose Breaks


11

J'ai créé un projet de composition Jetpack complètement nouveau (à partir du modèle de projet) avec Android Studio 4.0 Canary 6 et j'ai essayé d'ajouter des dépendances de pièce. Voici mon niveau d'application build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'


android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.example.composewithroom"
        minSdkVersion 29
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        compose true
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'androidx.ui:ui-framework:0.1.0-dev03'
    implementation 'androidx.ui:ui-layout:0.1.0-dev03'
    implementation 'androidx.ui:ui-material:0.1.0-dev03'
    implementation 'androidx.ui:ui-tooling:0.1.0-dev03'


    implementation "androidx.room:room-runtime:2.2.2"
    implementation "androidx.room:room-ktx:2.2.2"
    kapt "androidx.room:room-compiler:2.2.2" // e: java.lang.NoSuchMethodError: org.jetbrains.kotlin.codegen.state.GenerationState$Builder.isIrBackend(Z)Lorg/jetbrains/kotlin/codegen/state/GenerationState$Builder;

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

J'obtiens cette erreur lorsque j'essaye de le construire:

e: java.lang.NoSuchMethodError: org.jetbrains.kotlin.codegen.state.GenerationState$Builder.isIrBackend(Z)Lorg/jetbrains/kotlin/codegen/state/GenerationState$Builder;

Cela peut être soit "corrigé" en supprimant kapt "androidx.room:room-compiler:2.2.2"ou en désactivant la compositioncompose true

Quelqu'un a-t-il une idée de comment résoudre ce problème ou la base de données des salles est-elle simplement inutilisable avec Compose pour le moment?


1
AFAIK, c'est juste inutilisable pour le moment. Il existe un conflit entre une partie de la magie spéciale de Kotlin sur laquelle Compose s'appuie et certains processeurs d'annotation, tels que Room.
CommonsWare

Exactement - j'ai essayé compose = trueavec kapt "androidx.databinding"et j'ai eu la même erreur. C'est probablement juste que la composition est incompatible avec kapt.
Overmind Jiang

Réponses:


6

Doit être corrigé dans la version 1.3.61 ... mais le plugin du compilateur Jetpack Compose n'est pas mis à jour.

Vous pouvez trouver plus d'informations dans le problème YouTrack suivant: IR (Jetpack Compose), KAPT, Room: "AssertionError: le backend IR ne doit pas appeler KotlinTypeMapper.mapType: MainActivity" . Le dernier commentaire indique que:

Le problème ici est que JetPack Compose n'a pas encore mis à jour son compilateur Kotlin interne en 1.3.61. Nous verrons ce que nous pouvons y faire.

En outre, le problème suivant dans Google Issue Tracker: les processeurs d'annotation échouent lorsque la composition est activée

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.