升级到 jetpack compose 1.0.0-beta01 后,我尝试使用 kotlin.collections 中的 arrayListOf、listOf,但它们似乎没有隐式导入。
答案 0 :(得分:6)
您的问题可能与您使用的 Kotlin 版本有关。
<块引用>我想我经历了类似的过程 当我更新到新版本的 Jetpack Compose 库时,你做了 作为“副作用”,我被迫更新 kotlin 和 kotlin-gradle-plugin 版本然后 间接导致了你(和我)的问题。以下解决方法应该可以解决它。
很可能您在将 Jetpack Compose 更新为 Kotlin 1.4.30
后使用了 1.0.0-beta01
。将 Kotlin 更新为已修复的 1.4.31
版本,您的问题将几乎“解决”。
我认为整个问题在某种程度上与 1.4.30 中的以下错误有关,如果 你更感兴趣https://youtrack.jetbrains.com/issue/KT-44845
现在,在尝试构建您的项目后,您将收到一个很好的错误消息 This version (1.0.0-alpha13) of the Compose Compiler requires Kotlin version 1.4.30 but you appear to be using Kotlin version 1.4.31 which is not known to be compatible. Please fix your configuration (or `suppressKotlinVersionCompatibilityCheck` but don't say I didn't warn you!).
suppressKotlinVersionCompatibilityCheck 是一个编译参数,在我的情况下,我在 android -> kotlinOptions 下的模块 build.gradle 文件中设置了这种方式:
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
useIR = true
//here -->
freeCompilerArgs += ["-P", "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"]
}
<块引用>
这也取决于 build.gradle 文件的类型。 阅读有关如何设置这些编译参数的更多信息 Configure compiler arguments 其中描述了 groovy 和基于 kotlin 的 gradle 文件的不同方式。
现在应该没问题了,但请记住,一旦有新版本的 Jetpack Compose 依赖于较新版本的 Kotlin,您就想摆脱 suppressKotlinVersionCompatibilityCheck
参数。