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

如何在Kotlin Multiplatform模块中配置iOS仅Debug构建的专属代码

解决Kotlin Multiplatform中iOS Debug专属代码的配置问题

你之前创建了iosDebug源码集但没关联到对应的编译任务,所以Gradle会抛出警告。要让这个源码集参与iOS Debug构建,需要把它绑定到iOS的Debug编译流程里,具体配置如下:

正确的build.gradle.kts配置方式

方式一:直接关联到iOS编译任务

kotlin {
    ios {
        binaries {
            framework {
                baseName = "MyLibrary" // 替换成你的框架名称
            }
        }
        // 将iosDebug源码集关联到iOS Debug的主编译任务
        compilations.getByName("main") {
            defaultSourceSet.dependsOn(sourceSets.getByName("iosDebug"))
        }
    }

    sourceSets {
        val iosMain by getting
        val iosDebug by creating {
            dependsOn(iosMain)
            // 默认源码目录就是src/iosDebug/kotlin,和Android逻辑一致,无需额外配置
            // 若需自定义路径,可添加:kotlin.srcDir("自定义路径")
        }
    }
}

方式二:在源码集定义时直接关联

kotlin {
    sourceSets {
        val iosMain by getting
        val iosDebug by creating {
            dependsOn(iosMain)
            // 绑定到iOS Debug编译任务
            compilations.getByName("iosMain")?.let {
                it.defaultSourceSet.dependsOn(this)
            }
        }
    }
}

多iOS架构场景的统一配置

如果你的项目包含iosArm64、iosX64等多个iOS目标,可以通过层级配置统一关联:

kotlin {
    iosTargetHierarchy.default {
        common {
            // 让所有iOS Debug编译都包含iosDebug源码集
            compilations.main.defaultSourceSet.dependsOn(sourceSets.getByName("iosDebug"))
        }
    }

    sourceSets {
        val iosMain by getting
        val iosDebug by creating {
            dependsOn(iosMain)
        }
    }
}

效果说明

配置完成后,你只需要在src/iosDebug/kotlin目录下编写Debug专属代码,执行assembleMyLibraryDebugXCFramework时会自动包含这些代码,而Release构建(assembleMyLibraryReleaseXCFramework)则不会引入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:03:12