Kotlin 插件之间的区别

Bit*_*EVS 5 kotlin android-gradle-plugin kotlin-gradle-plugin

这三个 Kotlin 插件有什么区别,它们的实际用途是什么?

plugins {
    id 'kotlin-android'
    id 'org.jetbrains.kotlin.android'
    id "org.jetbrains.kotlin.jvm" version "1.6.20"
}
Run Code Online (Sandbox Code Playgroud)

第三种似乎是推荐的方式,特别是在使用Kotlin 协程时

hot*_*key 13

这些插件提供与其他不同 Gradle 插件的集成。它们都设置为 JVM 编译 Kotlin,但目标是与不同的其他工具进行互操作。

  • org.jetbrains.kotlin.android或者kotlin-android

    该插件提供了 Kotlin 与Android Gradle 插件的集成,该插件也应该应用于该项目。Kotlin 编译被设置为包含在 Android 变体的构建中(例如debugreleasetestDebug

    IDkotlin-androidorg.jetbrains.kotlin.android指定相同的 Gradle 插件。唯一的区别是,“完整”IDorg.jetbrains.kotlin.android可用于从 Gradle 插件门户解析插件,而较短的 IDkotlin-android仅可用于应用插件(如果您已将其添加到构建类路径中)(即,它已添加到其他地方) 。

  • org.jetbrains.kotlin.jvm(还有一个更短的别名kotlin

    这是用于构建面向 JVM 且无需 Android 支持的 Kotlin 项目的插件。

    该插件提供与Gradlejava插件(以及java-library或)的集成application。应用此插件的项目也可以使用Java源。javaKotlin 编译与插件的源集连接(默认情况maintest

通常,您应该只应用这些插件之一,具体取决于您的目标是 Android 还是“标准”JVM。如果您需要针对两个平台,您应该使用 ID 的 Kotlin Multiplatform 插件org.jetbrains.kotlin.multiplatform,该插件添加 DSL 来设置项目中的目标。这些可能包括jvm()android(),以及其他目标:JS、WASM、Kotlin/Native。

  • 虽然您只有 Android,但您可以使用“org.jetbrains.kotlin.android”。然后在某个时候,您将必须迁移到“org.jetbrains.kotlin.multiplatform”——无论是在您添加更多目标平台时还是在此之前的某个时间。在后一种情况下,您可以设置 Kotlin Multiplatform 来暂时构建单个 Android 目标。 (2认同)