问询:如何为Compose Multiplatform生成安卓、iOS等多平台发布应用包
Compose Multiplatform 各平台发布包构建指南
Android:生成Google Play用AAB包
- 先在
build.gradle.kts(:android)里配置签名信息:
signingConfigs { create("release") { storeFile = file("你的密钥库文件.jks") storePassword = "密钥库密码" keyAlias = "密钥别名" keyPassword = "密钥密码" } } buildTypes { release { signingConfig = signingConfigs.getByName("release") isMinifyEnabled = true isShrinkResources = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } }
- 执行构建命令:
./gradlew :android:bundleRelease - 生成的AAB包在
android/build/outputs/bundle/release/目录下,直接上传到Google Play Console即可。 - 注意:密钥库文件别提交到版本控制,建议用环境变量存储密码;开启R8混淆能大幅压缩包体积。
iOS:生成App Store用IPA包
- 打开iOS模块的Xcode项目(路径
iosApp/iosApp.xcodeproj),在「Signing & Capabilities」面板选择你的开发者账号,配置好Bundle ID和Team。 - 生成归档:Xcode顶部菜单选「Product > Archive」,归档完成后会自动打开Organizer面板。
- 导出IPA:在Organizer里选中刚生成的归档,点击「Distribute App」,选择「App Store Connect」,跟着向导完成配置,可直接上传到App Store或导出IPA文件备用。
- 命令行方式:
归档命令:xcodebuild archive -project iosApp.xcodeproj -scheme iosApp -archivePath ./iosApp.xcarchive
导出命令:xcodebuild -exportArchive -archivePath ./iosApp.xcarchive -exportPath ./iosIPA -exportOptionsPlist ExportOptions.plist
(需提前准备ExportOptions.plist,配置导出类型、签名信息等)
Web:Kotlin/WASM + Compose for Web打包
- 在
build.gradle.kts(:web)里确认wasm目标配置:
kotlin { wasmJs { moduleName = "你的Web应用名称" browser { commonWebpackConfig { outputFileName = "main.js" } distribution { directory = file("build/distributions/web") } } binaries.executable() } }
- 执行生产构建:
./gradlew :web:wasmJsBrowserProductionWebpack - 生成的静态文件在
web/build/distributions/web/目录下,包含HTML、JS、WASM文件,直接上传到任意静态托管服务即可部署。 - 优化技巧:在commonWebpackConfig里添加
devtool = false关闭source map,可减少包体积。
桌面平台:Windows/macOS/Linux分发包
方式1:JVM跨平台打包(一次配置多平台输出)
- 在
build.gradle.kts(:desktop)里配置native分发:
compose.desktop { application { mainClass = "MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "你的应用名称" packageVersion = "1.0.0" vendor = "你的开发者/厂商名称" windows { menuGroup = "你的应用组名" upgradeUuid = "生成唯一UUID,用于MSI升级识别" } macOS { bundleID = "com.你的域名.应用名" signing { identity = "Apple Development: 你的名字 (XXXXXX)" // 对应你的签名证书 } } linux { deb { maintainer = "你的名字" description = "应用描述" } } } } }
- 执行构建命令:
./gradlew :desktop:package - 生成的分发包在
desktop/build/compose/binaries/下对应平台的目录中,比如Windows的MSI在windows-msi/,macOS的DMG在macos-dmg/,Linux的DEB在linux-deb/。
方式2:Native原生打包(性能更优,需对应平台环境)
- 在
build.gradle.kts(:desktop)里添加各平台的native目标:
kotlin { linuxX64("linux") macosX64("macos") macosArm64("macosArm") mingwX64("windows") targets.withType<KotlinNativeTarget> { binaries.executable { entryPoint = "main" } } }
- 构建对应平台的可执行文件,比如构建macOS Arm64版本:
./gradlew :desktop:macosArm64BinariesExecutable - 生成的可执行文件在
desktop/build/bin/macosArm64/release/(或debug)目录下,之后可使用平台原生工具(如macOS的create-dmg、Windows的WiX Toolset)打包成正式分发包。
内容的提问来源于stack exchange,提问作者Shubham Mogarkar
相关产品推荐
相关产品推荐

