这三个Kotlin插件与它们的实际功能有什么区别?

plugins {
    id 'kotlin-android'
    id 'org.jetbrains.kotlin.android'
    id "org.jetbrains.kotlin.jvm" version "1.6.20"
}

第三种似乎是使用Kotlin Coroutines时特别推荐的方法

推荐答案

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

  • 100 or 101

    这个插件提供了Kotlin与the Android Gradle plugin的集成,这也应该应用到项目中.Kotlin编译被设置为包含在Android变体的构建中(例如debugreleasetestDebug等)

    IDs kotlin-androidorg.jetbrains.kotlin.android指定相同的Gradle插件.唯一的区别是,"完整"ID org.jetbrains.kotlin.android可以用于解析Gradle插件门户中的插件,而较短的ID kotlin-android只能用于应用构建类路径上的插件(即添加到其他地方).

  • 100(别名kotlin也更短)

    这是构建Kotlin项目的插件,该项目以不支持Android的JVM为目标.

    该插件提供了与the Gradle java plugin(以及java-libraryapplication)的集成.应用此插件的项目也可以使用Java源代码.Kotlin编译与java插件的源代码集(默认为maintest)连接在一起

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

Kotlin相关问答推荐

等待下一个值时暂停Kotlin Coroutine

如果启用了Flyway迁移,则不能具有配置属性';datources.default.架构-生成

在Spring Boot应用程序中使用网络请求功能将关键字挂起作为冗余

用Quarkus和Reactor重写异步过滤器中的数据流

如何定义一个函数来接受任何具有特定字段的数据类

如何在操作系统版本上正确获取Room数据库的路径>;=26 sdk?

在Kotlin lambda的参数中如何指定函数类型?

为什么Kotlin有次构造函数和init块?

每个 Kotlin 版本的默认 Kotlin 语言版本是什么?

Jetpack Compose:当状态从另一个活动改变时强制重组

多个不同的指针输入

如何在 Compose 中创建可重用的修饰符?

Fragment的onDestroy()中是否需要将ViewBinding设置为null?

在 Koin 中提供一个 Instance 作为其接口

Ktor 在 java.library.path 中没有 netty_transport_native_epoll_x86_64

什么是开放式property?为什么我不能将其设置器设为private私有?

如何将vararg作为数组传递给Kotlin中的函数?

Kotlin Flow 收集后无法执行代码

如何在 Kotlin 中将串联转换为模板

Android Jetpack Compose - 图像无法zoom 到框的宽度和高度