¿Por qué recibo un error interno de back-end: “Excepción durante el error de reducción de IR” cuando utilizo el modificador en el que se puede hacer clic Jetpack Compose?

4 minutos de lectura

Avatar de usuario de René Jörg Spies
René Jörg espías

Estoy creando una costumbre Checkbox Dentro de un Surface que tiene un Modifier.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 ?: "")
        }
    }

Cuando trato de construir eso, obtengo el Exception during IR lowering error error:

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

Ver el stacktrace completo aquí.

La eliminación de la Modifier.clickable resuelve el problema de construcción.

Ya intenté subir/bajar de categoría algunas versiones, pero nada funciona correctamente.
Actualmente, estoy usando esas versiones:

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

¿Alguien tiene una idea de cómo arreglar eso?

  • componer 1.0.2 no es compatible con kotlin 1.5.30Requiere 1.5.21. Si necesitas usar 1.5.30puedes cambiar a alfa 1.1.0-alpha03.

    – Phil Dujov

    18 de septiembre de 2021 a las 13:39


  • @PhilipDukhov Gracias por su respuesta. No necesito la versión 1.5.30 de Kotlin, pero, lamentablemente, cambiar a la versión 1.5.21 da exactamente el mismo error. Vea el stacktrace completo aquí pastebin.com/qXpyF8p4

    – René Jörg Espías

    19 sep 2021 a las 10:57

  • Es difícil decir qué causa exactamente el error, su código se compila bien para mí. En primer lugar, asegúrese de estar utilizando AS actualizado, que es Arctic Fox | 2020.3.1 Parche 2. Si ya lo estás usando, BackendException significa un error del compilador de composición o del backend de kotlin, le sugiero que lo informe a ambos redactar el rastreador de problemas y Rastreador de problemas de JetBrainsincluido el proyecto completo y la versión de su Android Studio para que pueda reproducirse fácilmente

    – Phil Dujov

    19 de septiembre de 2021 a las 11:06

  • @PhilipDukhov Gracias de nuevo. Android Studio está actualizado. He creado errores en cada rastreador que me enviaste. ¡Esperemos lo mejor!

    – René Jörg Espías

    19/09/2021 a las 17:01

  • @RenéJörgSpies Tengo un problema similar… ¿puede proporcionar un enlace al problema?

    – SR. X

    2 oct 2021 a las 13:26

Avatar de usuario de Cabezas
Cabezas

En mi caso, olvidé agregar build.gradle

android {
 ... 

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

  • kotlinCompilerVersion ahora esta depreciado :/

    – Kes Walker

    14 de enero de 2022 a las 13:58

Avatar de usuario de René Jörg Spies
René Jörg espías

Así que me puse en contacto con el equipo de JetBrains a través de su rastreador de problemas como sugirió @PhilipDukhov y resolvieron mi problema: https://youtrack.jetbrains.com/issue/KT-48815.

yo estaba usando kotlinCompilerExtensionVersion = versions.composeVersion en mi aplicación build.gradle archivo y esto es incorrecto. versions.composeVersion es algo proporcionado por Gradle pero parece estar obsoleto. Uno mismo debe escribir manualmente la versión que está usando allí.

Avatar de usuario de ExtendedScope
alcance extendido

Asegúrese de haber agregado componer a su gradle, puede agregarlo dentro android {...} bloquear. Consulte lo siguiente para agregar la composición:

buildFeatures {
    compose = true
}

composeOptions {
    kotlinCompilerExtensionVersion compose_version
}

  • Gracias eso me salvó tengo que agregarlo al otro módulo

    – Satar

    12 de agosto de 2022 a las 21:54

Avatar de usuario de MobileEvangelist
MóvilEvangelista

En mi caso, he creado un módulo independiente para mantener los componentes y el tema independientes de los módulos funcionales. Entonces, actualizar a continuación en los módulos Gradle dentro de Android funcionó para mí.

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

es por JetpackCompose! en gradle 7.2 debe agregar estas líneas en build.gradle en android bloquear:

  kotlinOptions {
        jvmTarget = "1.8"
    }
    
    buildFeatures {
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.0.4"
    }

avatar de usuario de kc_dev
kc_dev

Esto puede parecer contrario a la intuición (después de todo, el error dice “Error interno de back-end“), pero para mí, reiniciar el cliente de Android Studio lo solucionó.

avatar de usuario de memres
miembros

Resolví mi problema siguiendo los pasos

  1. proyecto limpio
  2. Eliminar la carpeta .gradle y .idea
  3. Invalidar cachés/reiniciar
  4. sincronizar gradle
  5. proyecto de reconstrucción

  • Esto funcionó para mí cuando todas las otras respuestas fallaron, ¡así que es un voto de mi parte! Como referencia, lo estaba obteniendo cuando comencé a establecer un orden de prioridad en mi regla de prueba de redacción, para resolver un problema diferente. es decir @get:Rule(order = 1) val composeTestRule = createComposeRule(). Siguiendo los pasos anteriores lo ‘arreglé’.

    – xavierdomínguez

    17 de agosto de 2022 a las 15:23


¿Ha sido útil esta solución?