Kotlin Multiplatform Library Publishing
Notes and tooling for publishing Kotlin Multiplatform libraries to Maven Central via GitHub Actions across Linux, macOS, and Windows build environments.
Publishing a Kotlin Multiplatform library to Maven Central is more involved than a standard JVM project. Different Kotlin targets require different host OS environments to compile: iOS, macOS, and Apple Silicon targets require macOS; Windows targets require Windows; Linux and JVM/JS targets run on Linux.
Problem it solves
Most CI/CD tutorials assume a single build environment. KMP library authors need a matrix build strategy (typically three separate jobs) to produce artifacts for all supported platforms, then merge and publish them in a coordinated way.
Approach
Using GitHub Actions with a matrix of Linux, macOS, and Windows runners. The reference implementation is redux-kotlin, which publishes a full KMP library to Maven Central.
Apple App Store considerations
Kotlin Multiplatform takes a native-first approach: shared code covers logic, networking, and models, while each platform retains fully native UI. This sidesteps Apple’s concern (articulated by Steve Jobs regarding Adobe Flash) about cross-platform tools “dumbing down” the lowest common denominator: KMP doesn’t touch UIKit or SwiftUI, so App Store submissions remain standard native apps.
Status
Reference implementation in production via ReduxKotlin. Patterns documented in blog posts.