Что-то странное, но получал ошибку «Внутренняя ошибка бэкенда» при использовании Jetpack Compose и выяснил, что она была вызвана вызовом функции, которая принимает лямбда-выражение из сопрограммы.
Воспроизвести довольно легко .... сузили его до следующих шагов:
Создайте новый проект, используя шаблон «Очистить действие». Обновите до dev07 (также имел проблемы с предыдущими версиями), а также добавьте следующее к build.gradle
composeOptions {
kotlinCompilerExtensionVersion = "0.1.0-dev07"
}
Добавьте следующее к MyActivity.kt
fun someFun(success: (String) -> Unit) {
}
и затем обновите onCreate
к следующему:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
someFun {
}
}
setContent {
MaterialTheme {
Greeting("Android")
}
}
}
Создайте проект, и затем вы увидите следующую ошибку:
e: java.lang.IllegalStateException: Backend Internal error: Exception during code generation
Element is unknownThe root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:42)
at org.jetbrains.kotlin.codegen.CompilationErrorHandler.lambda$static$0(CompilationErrorHandler.java:35)
at org.jetbrains.kotlin.backend.jvm.JvmBackendFacade.doGenerateFilesInternal$backend_jvm(JvmBackendFacade.kt:114)
Обратите внимание, что вам также необходимо добавить следующую зависимость к build.gradle
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"