Windows发布支持Android/iOS的KMM库至Maven Central后引入报错求助
解决Windows下KMM项目仅编译Android端的问题
方法1:通过Gradle配置默认仅启用Android目标
在项目根目录的gradle.properties文件中添加以下配置,强制KMM只处理Android相关构建目标,避免触发iOS任务:
kotlin.mpp.enabled.targets=android
添加后,所有默认构建操作都会跳过iOS相关任务,既不会尝试拉取不存在的iOS库产物,也能解决配置缓存的报错。
方法2:禁用iOS相关的构建任务
在模块的build.gradle.kts(或build.gradle)中添加配置,直接禁用所有iOS原生链接和编译任务:
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink> { enabled = false } tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile> { if (name.contains("ios")) { enabled = false } }
Gradle会跳过所有iOS相关的编译、链接任务,只执行Android端的构建流程。
方法3:针对目标源集精准控制依赖
修改KMM模块的build.gradle.kts,仅在Common和Android的源集中引入你的库,iOS源集不添加该依赖:
kotlin { android() ios() // 保留iOS目标但不配置相关依赖 sourceSets { val commonMain by getting { dependencies { implementation("com.yourgroup:MyLib:24.1.0-0010") } } val androidMain by getting { // Android可继承commonMain的依赖,无需额外重复添加 } val iosMain by getting { // 不添加MyLib的依赖,避免Gradle尝试拉取iOS版本的库 } } }
这种方式既能保留iOS目标的配置,又不会触发iOS库的拉取和编译流程。
方法4:构建时通过命令行指定仅编译Android
如果只是临时需要编译Android端,无需修改配置文件,直接使用以下Gradle命令:
./gradlew assembleDebug -Pkotlin.mpp.enabled.targets=android
该参数会临时覆盖默认配置,仅执行Android相关的构建任务。
内容的提问来源于stack exchange,提问作者Mohamed Chaabouni
相关产品推荐
相关产品推荐

