Skip to content

Instantly share code, notes, and snippets.

@benkoska
Last active April 4, 2021 13:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benkoska/a0ad9f52861e6ea22223714ef8422ad5 to your computer and use it in GitHub Desktop.
Save benkoska/a0ad9f52861e6ea22223714ef8422ad5 to your computer and use it in GitHub Desktop.
Better iOS Build Script for Kotlin Multiplatform
tasks {
register("buildPackafeForDebug", org.jetbrains.kotlin.gradle.tasks.FatFrameworkTask::class) {
baseName = "SharedCode"
from(
iosArm64().binaries.getFramework("SharedCode", "Debug"),
iosX64().binaries.getFramework("SharedCode", "Debug")
)
destinationDir = buildDir.resolve("xcode-frameworks")
group = "Universal framework"
description = "Builds a universal (fat) debug framework"
dependsOn("linkSharedCodeDebugFrameworkIosArm64")
dependsOn("linkSharedCodeDebugFrameworkIosX64")
}
register("buildPackageForRelease", Sync::class) {
group = "build"
val sdkName = System.getenv("SDK_NAME") ?: "iphonesimulator"
val targetName = "ios" + if (sdkName.startsWith("iphoneos")) "Arm64" else "X64"
val framework = kotlin.targets.getByName<KotlinNativeTarget>(targetName).binaries.getFramework("Release")
inputs.property("mode", "Release")
dependsOn(framework.linkTask)
val targetDir = File(buildDir, "xcode-frameworks")
from({ framework.outputDirectory })
into(targetDir)
}
register("universalFramework") {
val mode = System.getenv("CONFIGURATION")
if (mode == "Debug") {
dependsOn("buildPackafeForDebug")
} else {
dependsOn("buildPackageForRelease")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment