提问者:小点点

为什么我得到后端内部错误:"异常期间IR降低错误"时使用Jetpack撰写可点击修改?


我正在Surface中创建一个自定义复选框,它具有Modifi. clickable

    Surface(
        modifier = Modifier
            .clickable(
                enabled = enabled,
                interactionSource = interactionSource,
                indication = rememberRipple(),
                role = Role.Checkbox,
                onClick = { onCheckedChange(!checked) }
            )
            .then(modifier),
    ) {
        Row {
            Checkbox(checked = checked, onCheckedChange = {}, colors = colors)
            Text(text = text ?: "")
        }
    }

当我尝试构建它时,我在IR降低错误错误期间得到异常:

org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /home/rene/AndroidStudioProjects/pass13/app/src/main/java/com/aresid/simplepasswordgeneratorapp/ui/widgets/Checkbox.kt

在此处查看完整的堆栈跟踪。

删除Moditier. clickable可以解决构建问题。

我已经尝试了升级/降级一些版本,但没有正常工作。
目前,我正在使用这些版本:

    ext.versions = [
            'compileSdk': 31,
            'targetSdk' : 30,
            'minSdk'    : 26,
            'kotlin'    : '1.5.30',
            'navigation': '2.3.5',
            'compose'   : '1.0.2'
    ]

共3个答案

匿名用户

就我而言,我忘了添加build. gradle

android {
 ... 

    buildFeatures {
       compose true
    }
    composeOptions {
       kotlinCompilerExtensionVersion '1.0.3'
       kotlinCompilerVersion '1.5.30'
    }
}

匿名用户

所以我通过他们的问题跟踪器与JetBrains团队取得了联系,正如@Philip Dukhov所建议的那样,他们解决了我的问题:https://youtrack.jetbrains.com/issue/KT-48815.

我在我的应用程序的build. gradle文件中使用了kotlinCompilerExtensionVersion=versions.comeVersion,这是不正确的。version.comeVersion是Gradle提供的东西,但它似乎已被弃用。自己应该手动编写他们正在使用的版本。

匿名用户

确保您已将撰写添加到您的gradle中,您可以将其添加到android{…}块中。参考以下内容添加撰写:

buildFeatures {
    compose = true
}

composeOptions {
    kotlinCompilerExtensionVersion compose_version
}