如何用Compose为全支持系统创建原生分发包并生成exe应用
Compose 桌面应用:生成exe与跨系统原生分发包方案
Windows平台:生成exe与MSI安装包
1. 配置build.gradle.kts
在桌面模块的构建脚本中,添加原生分发配置:
plugins { kotlin("jvm") version "1.9.20" id("org.jetbrains.compose") version "1.5.11" } compose.desktop { application { mainClass = "com.yourpackage.MainKt" nativeDistributions { targetFormats(TargetFormat.Msi, TargetFormat.Dmg, TargetFormat.Deb, TargetFormat.Rpm) packageName = "YourApp" packageVersion = "1.0.0" windows { // 可选:设置开始菜单分组、升级UUID、应用图标 menuGroup = "YourAppGroup" upgradeUuid = "3F2504E0-4F89-11D3-9A0C-0305E82C3301" // 替换为自定义UUID iconFile.set(file("src/main/resources/app.ico")) } } } }
2. 执行打包任务
- 生成便携版exe:运行
gradlew.bat packageDistributionForCurrentOS(Windows环境),产物在build/compose/binaries/main/app目录,直接拿到exe即可分享。 - 生成MSI安装包:运行
gradlew.bat createDistributable,产物在build/compose/binaries/main/msi目录,是标准Windows安装包。
跨系统原生分发包生成
macOS(DMG镜像)
在macOS环境下,确保构建脚本中包含TargetFormat.Dmg,运行./gradlew createDistributable,产物在build/compose/binaries/main/dmg,生成的DMG可直接作为分发安装包。
可添加macOS专属配置:
macOS { bundleID = "com.yourcompany.yourapp" iconFile.set(file("src/main/resources/app.icns")) }
Linux(DEB/RPM包)
在Linux环境下,运行./gradlew createDistributable,构建脚本中配置的TargetFormat.Deb和TargetFormat.Rpm会生成对应格式包,产物分别在build/compose/binaries/main/deb、rpm目录。
Linux专属配置示例:
linux { iconFile.set(file("src/main/resources/app.png")) deb { maintainer = "Your Name <your@email.com>" description = "Your application description" } }
关键注意事项
- 必须使用JDK 17及以上版本,避免兼容性问题。
- 图标需匹配系统格式:Windows用.ico,macOS用.icns,Linux用.png。
- 官方推荐在目标系统环境下执行打包任务,跨系统交叉编译需要额外配置依赖,容易出问题。
- 打包前先执行
gradlew run验证应用正常运行,避免打包后出现启动故障。
内容的提问来源于stack exchange,提问作者Hadj Said Aoumer
相关产品推荐
相关产品推荐

