Basic implementation of a WebSocket protocol with JSON. Note : obfuscation & release build are deactivated again. Netty (needed for Ktor server) is a nightmare to build in release with or without proguard. Spend more time until now on project configuration that in actual prototyping.
73 lines
2.5 KiB
Kotlin
73 lines
2.5 KiB
Kotlin
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
|
|
|
plugins {
|
|
alias(libs.plugins.kotlinMultiplatform)
|
|
alias(libs.plugins.kotlinSerialization)
|
|
alias(libs.plugins.composeMultiplatform)
|
|
alias(libs.plugins.composeCompiler)
|
|
// kotlin("jvm") version "1.9.20"
|
|
// alias(libs.plugins.kotlinKtor)
|
|
}
|
|
|
|
kotlin {
|
|
jvm("desktop")
|
|
|
|
sourceSets {
|
|
val desktopMain by getting
|
|
|
|
commonMain.dependencies {
|
|
implementation(compose.runtime)
|
|
implementation(compose.foundation)
|
|
implementation(compose.material)
|
|
implementation(compose.ui)
|
|
implementation(compose.components.resources)
|
|
implementation(compose.components.uiToolingPreview)
|
|
implementation(libs.androidx.lifecycle.viewmodel)
|
|
implementation(libs.androidx.lifecycle.runtime.compose)
|
|
implementation(libs.androidx.navigation.compose)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(libs.ktor.client.core)
|
|
implementation(libs.ktor.client.cio)
|
|
implementation(libs.ktor.client.websockets)
|
|
implementation(libs.ktor.server.core)
|
|
implementation(libs.ktor.server.netty)
|
|
implementation(libs.ktor.server.websockets)
|
|
}
|
|
|
|
commonTest.dependencies {
|
|
implementation(libs.kotlin.test)
|
|
}
|
|
|
|
desktopMain.dependencies {
|
|
implementation(compose.desktop.currentOs)
|
|
implementation(libs.kotlinx.coroutines.swing)
|
|
}
|
|
}
|
|
}
|
|
|
|
// https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Native_distributions_and_local_execution/README.md#basic-usage
|
|
compose.desktop {
|
|
application {
|
|
mainClass = "com.pixelized.desktop.lwa.MainKt"
|
|
|
|
nativeDistributions {
|
|
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
|
|
|
packageName = "Table de Lwa"
|
|
packageVersion = "1.0.0"
|
|
description = "Application de support au jeux de rôle dans l'univers de Lwa."
|
|
copyright = "© 2020 Pixelized. All rights reserved."
|
|
vendor = "Pixelized"
|
|
|
|
includeAllModules = true
|
|
|
|
// Use system theming for the app toolbars.
|
|
jvmArgs("-Dapple.awt.application.appearance=system")
|
|
}
|
|
|
|
buildTypes.release.proguard {
|
|
obfuscate.set(false) // Obfuscation doesn't work because of netty.
|
|
configurationFiles.from(project.file("compose-desktop.pro"))
|
|
}
|
|
}
|
|
}
|