Windows下如何生成可跨端复用的KMM模块制品及可行性
在Windows系统下生成可复用的完整KMM库制品方案
可行性说明
完全可行。Windows环境下可以生成Android、JVM、iOS(含XCFramework)等全平台的KMM库制品,iOS部分无需本地Mac设备,可通过JetBrains提供的远程构建服务完成。
步骤1:检查并修正KMM模块的Gradle配置
确保模块的build.gradle.kts(或Groovy版build.gradle)中包含所有需要的目标平台配置,示例如下:
plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.library") } kotlin { // Android目标 androidTarget { compilations.all { kotlinOptions { jvmTarget = "1.8" } } } // JVM桌面目标(按需添加) jvm("desktop") // iOS全架构目标 iosX64() iosArm64() iosSimulatorArm64() // 统一iOS源码集 sourceSets { val commonMain by getting val androidMain by getting val desktopMain by getting val iosX64Main by getting val iosArm64Main by getting val iosSimulatorArm64Main by getting val iosMain by creating { dependsOn(commonMain) iosX64Main.dependsOn(this) iosArm64Main.dependsOn(this) iosSimulatorArm64Main.dependsOn(this) } } } android { namespace = "com.yourcompany.yourmodule" compileSdk = 34 defaultConfig { minSdk = 21 } }
步骤2:生成各平台制品的Gradle命令
- Android AAR包:运行以下命令,产物输出到
build/outputs/aar/目录./gradlew :your-module-name:assembleRelease - JVM Jar包(若配置了JVM目标):运行以下命令,产物输出到
build/libs/目录./gradlew :your-module-name:desktopJar - iOS XCFramework:Windows下通过远程构建生成,无需本地Mac:
- 在项目根目录的
gradle.properties中添加配置:kotlin.mpp.enableGranularSourceSetsMetadata=true kotlin.native.enableDependencyPropagation=false - 运行生成命令,产物输出到
build/xcode-frameworks/目录./gradlew :your-module-name:createXCFramework
首次使用需登录JetBrains账号,免费额度足以支撑个人开发需求。
- 在项目根目录的
步骤3:发布到本地仓库供其他KMM项目复用
若要在本地其他KMM项目中直接依赖该库,推荐发布到Maven本地仓库:
- 在模块的
build.gradle.kts中添加发布配置:publishing { repositories { mavenLocal() } publications { withType<MavenPublication> { groupId = "com.yourcompany" // 替换为你的groupId artifactId = "your-module-name" // 替换为你的模块名 version = "1.0.0" // 替换为版本号 } } } - 执行发布命令:
./gradlew :your-module-name:publishToMavenLocal - 在其他KMM项目中添加依赖:
dependencies { // 通用依赖 implementation("com.yourcompany:your-module-name:1.0.0") // 按需添加特定平台依赖(如iOS) implementation("com.yourcompany:your-module-name-iosx64:1.0.0") }
常见问题排查
- 若仅生成AAR,说明Gradle配置中仅启用了Android目标,需补充其他平台的配置代码
- iOS框架生成失败时,检查网络连接(需访问远程构建服务),确认JetBrains账号已正常登录
- 确保所有平台的源代码无语法错误,否则构建流程会提前终止
内容的提问来源于stack exchange,提问作者Mohamed Chaabouni
相关产品推荐
相关产品推荐

