Jetpack compose가 룸 컴파일러를 중단시킵니다


11

Android Studio 4.0 Canary 6을 사용하여 완전히 새로운 jetpack 작성 프로젝트 (프로젝트 템플릿에서)를 작성하고 룸 종속성을 추가하려고했습니다. 내 응용 프로그램 수준은 다음과 같습니다 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'
}

빌드하려고하면이 오류가 발생합니다.

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

kapt "androidx.room:room-compiler:2.2.2"작성 을 제거 하거나 사용 중지 하여 "고정"할 수 있습니다.compose true

누구 든지이 문제를 해결하는 방법을 알고 있습니까 아니면 현재 Compose에서 회의실 데이터베이스를 사용할 수 없습니까?


1
AFAIK, 지금은 사용할 수 없습니다. 작성에 의존하는 특수 Kotlin 마법과 Room과 같은 주석 프로세서간에 충돌이 있습니다.
CommonsWare

정확히 - 나는 시도 compose = truekapt "androidx.databinding"같은 오류가 발생했습니다. 아마도 작곡이 kapt와 호환되지 않는 것입니다.
Overmind 지앙

답변:


6

1.3.61에서 수정되어야하지만 Jetpack Compose 컴파일러 플러그인은 업데이트되지 않습니다.

다음 YouTrack 문제에서 자세한 정보를 찾을 수 있습니다. IR (Jetpack Compose), KAPT, Room : "AssertionError : IR 백엔드는 KotlinTypeMapper.mapType : MainActivity"를 호출하지 않아야합니다 . 마지막 의견은 다음과 같이 말합니다.

여기서 문제는 JetPack Compose가 내부 Kotlin 컴파일러를 1.3.61로 아직 업데이트하지 않았다는 것입니다. 우리는 그것에 대해 무엇을 할 수 있는지 볼 것입니다.

또한 Google 이슈 트래커의 다음 문제 : 작성이 활성화되면 주석 프로세서가 실패합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.