Jetpack soạn thảo phá vỡ Trình biên dịch phòng


11

Tôi đã tạo một dự án soạn thảo jetpack hoàn toàn mới (từ mẫu dự án) với Android Studio 4.0 Canary 6 và tôi đã cố gắng thêm phụ thuộc phòng. Đây là cấp độ ứng dụng của tôi 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'
}

Tôi gặp lỗi này khi tôi cố gắng xây dựng nó:

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

Điều này có thể được "sửa" bằng cách xóa kapt "androidx.room:room-compiler:2.2.2"hoặc vô hiệu hóa soạn thảocompose true

Có ai có ý tưởng làm thế nào để sửa lỗi này không hoặc cơ sở dữ liệu phòng không thể sử dụng được với Compose vào lúc này?


1
AFAIK, nó chỉ là không thể sử dụng tại thời điểm này. Có một cuộc xung đột giữa một số phép thuật đặc biệt của Kotlin mà Compose dựa vào và một số bộ xử lý chú thích, như Room.
CommonsWare

Chính xác - Tôi đã thử compose = truevới kapt "androidx.databinding"và nhận được cùng một lỗi. Có lẽ chỉ là sáng tác không tương thích với kapt.
Overmind Jiang

Câu trả lời:


6

Cần được sửa trong 1.3.61 ... nhưng plugin trình biên dịch Jetpack Compose không được cập nhật.

Bạn có thể tìm thêm thông tin trong vấn đề YouTrack sau: IR (Jetpack Compose), KAPT, Room: "AssertsError: IR backend không nên gọi KotlinTypeMapper.mapType: MainActivity" . Nhận xét cuối cùng nói rằng:

Vấn đề ở đây là JetPack Compose chưa cập nhật trình biên dịch Kotlin nội bộ lên 1.3.61. Chúng ta sẽ thấy những gì chúng ta có thể làm về nó.

Ngoài ra, sự cố sau trong Trình theo dõi sự cố của Google: Bộ xử lý chú thích không thành công khi bật chế độ soạn thảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.