Files
event-demo/composeApp/build.gradle.kts
T
flecomte 774e80d9d5
Tests / build (pull_request) Successful in 7m44s
Tests / test (pull_request) Failing after 10m37s
Tests / lint (pull_request) Successful in 14m30s
feature: init kotlin compose multiplatforme
2026-08-06 21:28:57 +02:00

136 lines
4.3 KiB
Kotlin

import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
val kotlinSerializationVersion: Provider<String> = providers.gradleProperty("kotlin_serialization_version")
val kotlinxCoroutinesVersion: Provider<String> = providers.gradleProperty("kotlinx_coroutines_version")
val ktorVersion: Provider<String> = providers.gradleProperty("ktor_version")
val navigationComposeVersion: Provider<String> = providers.gradleProperty("navigation_compose_version")
val androidCompileSdk: Provider<String> = providers.gradleProperty("android_compile_sdk")
val androidTargetSdk: Provider<String> = providers.gradleProperty("android_target_sdk")
val androidMinSdk: Provider<String> = providers.gradleProperty("android_min_sdk")
plugins {
kotlin("multiplatform")
kotlin("plugin.compose")
kotlin("plugin.serialization")
id("org.jetbrains.compose")
id("com.android.application")
}
kotlin {
androidTarget {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.add("-opt-in=kotlin.uuid.ExperimentalUuidApi")
}
}
jvm("desktop") {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
freeCompilerArgs.add("-opt-in=kotlin.uuid.ExperimentalUuidApi")
}
}
@OptIn(ExperimentalWasmDsl::class)
wasmJs {
outputModuleName = "eventDemoApp"
browser {
commonWebpackConfig {
outputFileName = "eventDemoApp.js"
}
}
binaries.executable()
}
compilerOptions {
freeCompilerArgs.add("-opt-in=kotlin.uuid.ExperimentalUuidApi")
}
sourceSets {
commonMain.dependencies {
implementation(project(":shared"))
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation("org.jetbrains.androidx.navigation:navigation-compose:${navigationComposeVersion.get()}")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${kotlinxCoroutinesVersion.get()}")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:${kotlinSerializationVersion.get()}")
implementation("io.ktor:ktor-client-core:${ktorVersion.get()}")
implementation("io.ktor:ktor-client-content-negotiation:${ktorVersion.get()}")
implementation("io.ktor:ktor-client-websockets:${ktorVersion.get()}")
implementation("io.ktor:ktor-serialization-kotlinx-json:${ktorVersion.get()}")
}
androidMain.dependencies {
implementation("androidx.activity:activity-compose:1.11.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${kotlinxCoroutinesVersion.get()}")
implementation("io.ktor:ktor-client-okhttp:${ktorVersion.get()}")
}
getByName("desktopMain").dependencies {
implementation(compose.desktop.currentOs)
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:${kotlinxCoroutinesVersion.get()}")
implementation("io.ktor:ktor-client-cio:${ktorVersion.get()}")
}
wasmJsMain.dependencies {
implementation("io.ktor:ktor-client-js:${ktorVersion.get()}")
}
}
}
android {
namespace = "io.github.flecomte.eventdemo.app"
compileSdk = androidCompileSdk.get().toInt()
defaultConfig {
applicationId = "io.github.flecomte.eventdemo.app"
minSdk = androidMinSdk.get().toInt()
targetSdk = androidTargetSdk.get().toInt()
versionCode = 1
versionName = "1.0"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
}
compose.desktop {
application {
mainClass = "eventDemo.app.MainKt"
nativeDistributions {
targetFormats(
org.jetbrains.compose.desktop.application.dsl.TargetFormat.Dmg,
org.jetbrains.compose.desktop.application.dsl.TargetFormat.Msi,
org.jetbrains.compose.desktop.application.dsl.TargetFormat.Deb,
)
packageName = "EventDemo"
packageVersion = "1.0.0"
}
}
}