Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
What are the difference between this three Kotlin plugin and what they actually do?
plugins {
id 'kotlin-android'
id 'org.jetbrains.kotlin.android'
id "org.jetbrains.kotlin.jvm" version "1.6.20"
The third one seems to be the recommended way specially when using Kotlin Coroutines
These plugins provide integration with different other Gradle plugins. They both setup compiling Kotlin for the JVM, but aim to interoperate with different other tools.
org.jetbrains.kotlin.android
or kotlin-android
This plugin offers integration of Kotlin with the Android Gradle plugin, which should also be applied to the project. The Kotlin compilations are set up to be included in the builds of Android variants (e.g. debug
, release
, testDebug
etc.)
The IDs kotlin-android
and org.jetbrains.kotlin.android
designate the same Gradle plugin. The only difference is that the "full" ID org.jetbrains.kotlin.android
can be used for resolving the plugin from the Gradle Plugin Portal, while the shorter ID kotlin-android
can only be used for applying the plugin if you already have it on the build classpath (i.e. it's added elsewhere).
org.jetbrains.kotlin.jvm
(also has a shorter alias kotlin
)
This is the plugin for building Kotlin projects that target JVM without Android support.
The plugin offers integration with the Gradle java
plugin (as well as java-library
or application
). The project that applies this plugin can also use Java sources. The Kotlin compilations are wired with the java
plugin's source sets (main
and test
by default)
Normally you should only apply one of these plugins, depending on whether you target Android or "standard" JVM. If you need to target both platforms, you should use the Kotlin Multiplatform plugin by ID org.jetbrains.kotlin.multiplatform
, which adds the DSL to setup the targets in the project. Those might include jvm()
and android()
, as well as other targets: JS, WASM, Kotlin/Native.
–
–
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.