Jetpack Compose for Desktop 开发注意
2022-11-17 本文已影响0人
雁过留声_泪落无痕
一、背景
二、build.gradle.kts
- 添加依赖
kotlin {
jvm {
compilations.all {
kotlinOptions.jvmTarget = "11"
}
withJava()
}
sourceSets {
val jvmMain by getting {
dependencies {
implementation(compose.desktop.currentOs)
// implementation("com.google.code.gson:gson:2.8.5")
implementation("com.squareup.retrofit2:retrofit:2.6.0")
implementation("com.squareup.retrofit2:converter-gson:2.6.0")
}
}
val jvmTest by getting
}
}
- 拷贝 wix311.zip,使用
gradlew packageMsi命令打包安装文件时需要用到该文件,需要从 github 下载,可以手动下载后保存到工程根目录。
// 避免每次 clean 后都需要再次下载, 这里直接在根目录放置下载好的文件, 用 task 进行拷贝
task("copyWix311", Copy::class) {
from("wix311.zip")
into("build/wixToolset")
}
// 需要在 afterEvaluate 中处理, 否则报找不到 packageMsi 这个 task 的错误
afterEvaluate {
tasks.getByName("packageMsi").dependsOn("copyWix311")
tasks.getByName("downloadWix").enabled = false
if (file("build/wixToolset/unpacked").exists()) {
tasks.getByName("unzipWix").enabled = false
}
}
- 添加模块,比如 Gson 中使用到了
java.sql包下的相关类,如java.sql.Time,但是打包 msi 安装文件时会对标准 java 运行时进行裁剪,默认情况下不会包含java.sql模块,这里可以手动添加。 - 修改
mainClass,如果MainKt移动到了某个包下,如com.xxx.MainKt,这里需要同步修改,否则打包成安装文件安装完成后会运行失败,提示找不到类MainKt。(在 Git bash 中运行./xxx.exe可以看到提示)
compose.desktop {
application {
mainClass = "com.xxx.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb, TargetFormat.Exe)
packageName = "Xxx"
packageVersion = "1.0.0"
modules("java.sql")
}
}
}
通过阅读源码发现可以添加模块
compose.desktop {
application {
...
nativeDistributions {
...
windows {
iconFile.set(file("WIFI.ico"))
}
}
}
}
示例
安装后运行截图
问题
- TODO