Ollaom
04/07/2026, 6:52 PMRizwan
04/09/2026, 5:06 AMOllaom
04/09/2026, 8:57 AMOllaom
04/09/2026, 11:17 AMdorche
04/09/2026, 11:31 AMlistOfNotNull(
iosArm64(),
iosSimulatorArm64().takeUnless { YOUR_RUNNING_IN_CI_FLAG },
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "Shared"
isStatic = true
}
}
in your gradle script.
From memory there are already some optimisations that the Kotlin team has built in thoOllaom
04/09/2026, 11:57 AMval frameworkName = "shared"
val xcf = XCFramework(frameworkName)
targets.filterIsInstance<KotlinNativeTarget>()
.forEach {
it.binaries {
framework {
baseName = frameworkName
val includeToXCF = when (project.activeArch) {
Arch.ARM -> {
this.target.name.contains("iosArm64") || this.target.name.contains("iosSimulatorArm64")
}
Arch.ARM_SIMULATOR_DEBUG -> {
this.target.name.contains("iosSimulatorArm64") && this.debuggable && !this.optimized
}
Arch.X86 -> {
this.target.name.contains("iosX64")
}
Arch.ALL -> {
true
}
}
if (includeToXCF) {
xcf.add(this)
logger.lifecycle("framework '${this.name}Ollaom
04/09/2026, 11:58 AM