KMP 运行与打包
运行程序
运行Android客户端,你首先需要把USB连接到物理机上,或者使用模拟器模拟一个手机;
然后选择运行配置的 composeApp
,运行它即可
运行windows客户端,有两种办法:
方法一:直接进入到工程根目录,打开命令行,输入.\gradlew.bat run
运行即可;
方法二:IDEA新建一个gradle配置,配置参数使用run(如下图所示,我新增了一个gradle配置项,名称叫做desktopApp,运行参数是run),添加完毕后直接执行此配置即可运行windows客户端;
程序打包
How to Generate Executables in KMP (apk, iab, msi, dmg, deb) - KMP for Beginners (youtube.com)
打包APK
很简单,AndroidStudio里面找到Build一栏,里面有生成APK的入口点;
生成的apk文件位置在:composeApp\build\outputs\apk\androidTest\debug
打包windows安装包等
找到composeApp里面的对应gradle文件,需要注意你要在文件的末尾配置好windows打包的对应参数,如下图所示(该代码默认就添加了,你可以不做修改)
compose.desktop {
application {
mainClass = "top.zhillerlab.kmpdemo2.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "top.zhillerlab.kmpdemo2"
packageVersion = "1.0.0"
}
}
}
这一步必须要在工程根目录下执行以下目录:.\gradlew.bat packageMsi
这样就会将工程打包为一个MSI安装包;
安装包位置:composeApp\build\compose\binaries\main\msi
windows 自定义参数打包
特别注意,这里添加了一个LICENSE授权文件,你要在composeApp目录下添加对应的文件,不然gradle读取不到就无法打包!!!
// 配置Compose桌面应用程序
compose.desktop {
// 配置应用程序的主类
application {
mainClass = "top.zhillerlab.kmpdemo2.MainKt"
// 配置原生分发属性
nativeDistributions {
// 指定目标分发格式为Dmg、Msi和Deb
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
// 设置包名称
packageName = "KmpDemo2"
// 设置包版本
packageVersion = "1.1.0"
// 设置版本号
version = "1.1.0"
// 描述应用程序
description = "A simple demo for KMP"
// 版权信息
copyright = "© 2024 My Name. All rights reserved."
// 厂商信息
vendor = "Example vendor"
// 设置许可证文件
licenseFile.set(project.file("LICENSE.txt"))
}
}
}
不同平台不同打包参数
一般的,有三个PC端平台可以打包:
- MSI:用于windows
- DMG:用于mac
- DEB:用于Linux
可以针对不同的平台发布不同的版本号,或者使用不同的参数
compose.desktop {
application {
nativeDistributions {
packageVersion = "1.0.0"
linux {
packageVersion = "1.0.0"
debPackageVersion = "1.0.0"
rpmPackageVersion = "1.0.0"
}
macOS {
packageVersion = "1.1.0"
dmgPackageVersion = "1.1.0"
pkgPackageVersion = "1.1.0"
packageBuildVersion = "1.1.0"
dmgPackageBuildVersion = "1.1.0"
pkgPackageBuildVersion = "1.1.0"
}
windows {
packageVersion = "1.2.0"
msiPackageVersion = "1.2.0"
exePackageVersion = "1.2.0"
}
}
}
}