为什么升级到 jetpack compose 1.0.0-beta01 后不会隐式导入 kotlin.collections?

时间:2021-02-25 13:54:06

标签: android kotlin android-jetpack-compose

升级到 jetpack compose 1.0.0-beta01 后,我尝试使用 kotlin.collections 中的 arrayListOf、listOf,但它们似乎没有隐式导入。

1 个答案:

答案 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 参数。