Kotlin1.6,Jetpack合成1.1.0编译错误

vuv7lop3  于 2022-12-13  发布在  Kotlin
关注(0)|答案(5)|浏览(202)

我已经将我的项目更新为Kotlin1.6.10,Compose 1.1.0-rc 01,并将compose编译器更新为1.1.0-rc 02,因为我需要Compose中的一些新特性。
在编译过程中我现在有这个错误,任何解决方案?它是与Kotlin1.5.31,编写/编写编译器1.0.5工作

java.lang.IllegalStateException: Symbol for kotlin.collections/mutableMapOf|-4813910536206556932[0] is unbound
at org.jetbrains.kotlin.ir.symbols.impl.IrBindablePublicSymbolBase.getOwner(IrPublicSymbolBase.kt:52)
at org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionPublicSymbolImpl.getOwner(IrPublicSymbolBase.kt:74)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitCall(LiveLiteralTransformer.kt:663)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitCall(IrElementTransformerVoid.kt:199)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitCall(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl.accept(IrCallImpl.kt:47)
at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:33)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.transformChildren(IrBody.kt:46)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitBody(IrElementTransformerVoid.kt:108)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:114)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:115)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitExpressionBody(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.accept(IrBody.kt:36)
at org.jetbrains.kotlin.ir.expressions.IrExpressionBody.transform(IrBody.kt:39)
at org.jetbrains.kotlin.ir.declarations.IrField.transformChildren(IrField.kt:41)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:81)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:82)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitField(IrElementTransformerVoid.kt:24)
at org.jetbrains.kotlin.ir.declarations.IrField.accept(IrField.kt:34)
at org.jetbrains.kotlin.ir.IrElement$DefaultImpls.transform(IrElement.kt:32)
at org.jetbrains.kotlin.ir.IrElementBase.transform(IrElementBase.kt:19)
at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
at org.jetbrains.kotlin.ir.declarations.IrClass.transformChildren(IrClass.kt:66)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitDeclaration(IrElementTransformerVoid.kt:57)
at org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid.visitClass(IrElementTransformerVoid.kt:66)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.access$visitClass$s780614737(LiveLiteralTransformer.kt:158)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:466)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer$visitClass$1.invoke(LiveLiteralTransformer.kt:465)
at androidx.compose.compiler.plugins.kotlin.lower.DurableKeyVisitor.siblings(DurableKeyVisitor.kt:117)
at androidx.compose.compiler.plugins.kotlin.lower.DurableKeyVisitor$siblings$1.invoke(DurableKeyVisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.DurableKeyVisitor.enter(DurableKeyVisitor.kt:96)
at androidx.compose.compiler.plugins.kotlin.lower.DurableKeyVisitor.siblings(DurableKeyVisitor.kt:131)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.siblings(LiveLiteralTransformer.kt:194)
at androidx.compose.compiler.plugins.kotlin.lower.LiveLiteralTransformer.visitClass(LiveLiteralTransformer.kt:465)

etc.....```
h5qlskok

h5qlskok1#

我在更新Compose和Kotlin版本时在两个不同的项目上遇到了完全相同的问题。
删除kotlin-android-extensions插件为我解决了这两个项目的问题。这意味着您不能再使用Kotlin合成视图绑定。

oyt4ldly

oyt4ldly2#

我已经看到一些其他的报告(和我自己)看到了同样的事情。一个临时的解决方案是使用新的compose和旧的compose编译器,这不会强迫你升级Kotlin,因为你只需要新的compose功能。在你的build中添加类似的东西。gradle使用支持你的kotlin版本(https://developer.android.com/jetpack/androidx/releases/compose-kotlin)的类似compose版本

composeOptions {
   
    kotlinCompilerExtensionVersion = '1.1.0-beta03'
}
u4dcyp6a

u4dcyp6a3#

当您在同一个项目中同时使用Jetpack Compose和Kotlin合成绑定时,会出现此问题。删除kotlin-android-extensions(用于合成绑定)插件将解决此问题。此外,合成绑定现在已弃用,您应该将代码迁移到视图绑定。https://developer.android.com/topic/libraries/view-binding/migration
但这是不可能的,我在这一刻,这将需要至少5-6天,我这样做,因为我有大约50-60个文件使用这个。所以我不得不选择其他方式为这种情况下,

composeOptions {
    kotlinCompilerExtensionVersion "1.1.0-beta03"
}

为此我还得降级Kotlin版本。

ext.kotlin_version = "1.5.31"
ext.compose_version = '1.1.1'
7rfyedvj

7rfyedvj4#

升级Kotlin版本修复了我的问题。升级时,请检查developer docs中提到的Compose-Kotlin兼容性检查
我已升级为Kolin:1.6.20和使用的kotlinCompilerExtensionVersion = "1.2.0-alpha08"。这是一个旧的Kotlin版本,你可以尝试最新的。

ix0qys7i

ix0qys7i5#

使用以下版本修复问题编写选项{ kotlinCompilerExtensionVersion '1.1.0-beta 03' kotlinCompilerVersion '1.5.31' }

相关问题