Joh*_*lly 16 android android-jetpack-compose
有点奇怪,但在使用 Jetpack Compose 时收到“后端内部错误”错误,结果发现它是通过调用从协程中获取 lambda 的函数触发的。
重现起来非常容易......已将其范围缩小到以下步骤:
使用“空撰写活动”模板创建新项目。更新到 dev07(以前的版本也有问题)并添加以下内容build.gradle
composeOptions {
kotlinCompilerExtensionVersion = "0.1.0-dev07"
}
Run Code Online (Sandbox Code Playgroud)
添加以下内容到MyActivity.kt
fun someFun(success: (String) -> Unit) {
}
Run Code Online (Sandbox Code Playgroud)
然后更新onCreate为以下内容:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
someFun {
}
}
setContent {
MaterialTheme {
Greeting("Android")
}
}
}
Run Code Online (Sandbox Code Playgroud)
构建项目,然后您会看到以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
请注意,您还需要添加以下依赖项build.gradle
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
Run Code Online (Sandbox Code Playgroud)
小智 33
确保将其添加到您使用 compose 的每个模块中
buildFeatures {
compose true
}
Run Code Online (Sandbox Code Playgroud)
这是 alashow 的评论,也是唯一有效的方法。
Sum*_*ule 10
确保您已将 compose 添加到 Gradle insideandroid {...}块中。您必须为每个使用 compose 的模块执行此操作。请参考以下内容添加撰写:
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion compose_version
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8867 次 |
| 最近记录: |