You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Kotlin桌面应用编译为含依赖与JRE的单EXE文件?

将Kotlin Compose桌面应用打包为单文件可移植EXE

可以实现,通过调整Gradle配置结合jpackage特性,就能生成包含所有依赖和Java运行时的单个EXE文件,无需MSI安装程序。以下是具体配置修改步骤:

1. 启用代码缩减(可选但推荐)

开启ProGuard减小最终打包体积,修改build.gradle.kt中ProGuard相关配置:

buildTypes.release.proguard {
    isEnabled = true
    configurationFiles.from(file("proguard-compose.pro"))
}

在项目根目录创建proguard-compose.pro文件,添加基础混淆规则:

-keep class MainKt { public static void main(java.lang.String[]); }
-keep class androidx.compose.** { *; }
-keep class kotlin.** { *; }
-dontwarn androidx.compose.**

2. 修改nativeDistributions配置生成单文件

更新nativeDistributions块,添加jpackage的--win-onefile参数(需JDK 17+支持),同时可按需缩减JRE模块:

compose.desktop {
    application {
        mainClass = "MainKt"
        javaHome = System.getenv("JDK_17")
        jvmArgs += listOf("-Xmx2G")
        nativeDistributions {
            targetFormats(TargetFormat.Exe)            
            packageVersion = "1.2.3"
            packageName = "MyApp-v$packageVersion"
            includeAllModules = true // 包含Java运行时
            // 只保留应用必需的JRE模块,减小体积
            modules = listOf(
                "java.base",
                "java.desktop",
                "java.logging",
                "java.naming"
            )
            windows {
                perUserInstall = true
                // 添加jpackage参数生成单文件EXE
                jpackageExtraArgs += listOf("--win-onefile")
            }
        }

        buildTypes.release.proguard {
            isEnabled = true
            configurationFiles.from(file("proguard-compose.pro"))
        }
    }
}

3. 执行打包任务

运行以下Gradle命令完成打包:

./gradlew packageReleaseNativeDistribution

打包完成后,单个EXE文件会生成在build/compose/binaries/native/release/exe目录下,该文件可直接运行,无需安装,完全便携。

关键注意事项

  • --win-onefile是JDK 17及以上版本jpackage的特性,确保你的javaHome指向的JDK版本支持该参数
  • 混淆规则需根据应用实际依赖调整,避免运行时出现类找不到或方法无法调用的问题
  • 单文件EXE首次启动时会自动解压到系统临时目录,启动速度略慢于文件夹式分发,但便携性更优

内容的提问来源于stack exchange,提问作者t3chb0t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:40:02