1- import org.jetbrains.compose.ExperimentalComposeLibrary
21import org.jetbrains.compose.desktop.application.dsl.TargetFormat
2+ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
3+ import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
4+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
5+ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
36
47plugins {
58 alias(libs.plugins.kotlinMultiplatform)
69 alias(libs.plugins.androidApplication)
710 alias(libs.plugins.jetbrainsCompose)
11+ alias(libs.plugins.compose.compiler)
812}
913
1014kotlin {
11- androidTarget {
12- compilations.all {
13- kotlinOptions {
14- jvmTarget = " 1.8"
15+ @OptIn(ExperimentalWasmDsl ::class )
16+ wasmJs {
17+ moduleName = " composeApp"
18+ browser {
19+ val projectDirPath = project.projectDir.path
20+ commonWebpackConfig {
21+ outputFileName = " composeApp.js"
22+ devServer = (devServer ? : KotlinWebpackConfig .DevServer ()).apply {
23+ static = (static ? : mutableListOf ()).apply {
24+ // Serve sources to debug inside browser
25+ add(projectDirPath)
26+ }
27+ }
1528 }
1629 }
30+ binaries.executable()
31+ }
32+
33+ androidTarget {
34+ @OptIn(ExperimentalKotlinGradlePluginApi ::class )
35+ compilerOptions {
36+ jvmTarget.set(JvmTarget .JVM_11 )
37+ }
1738 }
18-
39+
1940 jvm(" desktop" )
20-
41+
2142 listOf (
2243 iosX64(),
2344 iosArm64(),
@@ -28,40 +49,45 @@ kotlin {
2849 isStatic = true
2950 }
3051 }
31-
52+
3253 sourceSets {
3354 val desktopMain by getting
34-
55+
3556 androidMain.dependencies {
36- implementation(libs. compose.ui.tooling .preview)
57+ implementation(compose.preview)
3758 implementation(libs.androidx.activity.compose)
3859 }
3960 commonMain.dependencies {
4061 implementation(compose.runtime)
4162 implementation(compose.foundation)
4263 implementation(compose.material)
4364 implementation(compose.ui)
44- @OptIn(ExperimentalComposeLibrary ::class )
4565 implementation(compose.components.resources)
46-
47- implementation(" org.jetbrains.kotlinx:kotlinx-datetime:0.4.1" )
66+ implementation(compose.components.uiToolingPreview)
67+ implementation(libs.androidx.lifecycle.viewmodel)
68+ implementation(libs.androidx.lifecycle.runtime.compose)
69+ implementation(" org.jetbrains.kotlinx:kotlinx-datetime:0.6.0" )
4870 }
4971 desktopMain.dependencies {
5072 implementation(compose.desktop.currentOs)
73+ implementation(libs.kotlinx.coroutines.swing)
74+ }
75+ wasmJsMain.dependencies {
76+ implementation(npm(" @js-joda/timezone" , " 2.3.0" ))
5177 }
5278 }
5379}
5480
5581android {
56- namespace = " kmp. compose.demo"
82+ namespace = " compose.project .demo"
5783 compileSdk = libs.versions.android.compileSdk.get().toInt()
5884
5985 sourceSets[" main" ].manifest.srcFile(" src/androidMain/AndroidManifest.xml" )
6086 sourceSets[" main" ].res.srcDirs(" src/androidMain/res" )
6187 sourceSets[" main" ].resources.srcDirs(" src/commonMain/resources" )
6288
6389 defaultConfig {
64- applicationId = " kmp. compose.demo"
90+ applicationId = " compose.project .demo"
6591 minSdk = libs.versions.android.minSdk.get().toInt()
6692 targetSdk = libs.versions.android.targetSdk.get().toInt()
6793 versionCode = 1
@@ -78,21 +104,24 @@ android {
78104 }
79105 }
80106 compileOptions {
81- sourceCompatibility = JavaVersion .VERSION_1_8
82- targetCompatibility = JavaVersion .VERSION_1_8
107+ sourceCompatibility = JavaVersion .VERSION_11
108+ targetCompatibility = JavaVersion .VERSION_11
109+ }
110+ buildFeatures {
111+ compose = true
83112 }
84113 dependencies {
85- debugImplementation(libs. compose.ui.tooling )
114+ debugImplementation(compose.uiTooling )
86115 }
87116}
88117
89118compose.desktop {
90119 application {
91- mainClass = " MainKt"
120+ mainClass = " compose.project.demo. MainKt"
92121
93122 nativeDistributions {
94123 targetFormats(TargetFormat .Dmg , TargetFormat .Msi , TargetFormat .Deb )
95- packageName = " kmp. compose.demo"
124+ packageName = " compose.project .demo"
96125 packageVersion = " 1.0.0"
97126 }
98127 }
0 commit comments