Skip to content

Migrate to Kotlin Multiplatform#96

Open
NKU100 wants to merge 1 commit intoKyant0:masterfrom
NKU100:kmp-migration
Open

Migrate to Kotlin Multiplatform#96
NKU100 wants to merge 1 commit intoKyant0:masterfrom
NKU100:kmp-migration

Conversation

@NKU100
Copy link
Copy Markdown

@NKU100 NKU100 commented Apr 2, 2026

This PR migrates Backdrop from an Android-only library to Kotlin Multiplatform, enabling usage on Wasm (browser) targets in addition to Android.

Changes

  • KMP targets: android, wasmJs
  • Source relocation: src/main/java/src/commonMain/kotlin/
  • Platform split using expect/actual:
    • androidMain (10 files): Android RenderEffect, RuntimeShader, BlurMaskFilter (native APIs)
    • wasmJsMain (10 files): Skia ImageFilter, RuntimeShaderBuilder, MaskFilter (via Skiko)
  • Effects: Blur, ColorFilter, Lens, RenderEffect — each with Android and Skia implementations
  • Highlight shaders: SkSL shaders reimplemented for wasmJs using RuntimeShaderBuilder
  • Build scripts: Migrated to kotlin.multiplatform + com.android.kotlin.multiplatform.library + Compose Multiplatform
  • Maven publish: Retained full configuration

Architecture

- Convert from Android Library to KMP (android, wasmJs targets)
- Move sources from src/main/java to src/commonMain/kotlin
- Split platform-specific code into androidMain and wasmJsMain using expect/actual
- Android: RenderEffect, RuntimeShader, BlurMaskFilter (native APIs)
- wasmJs: Skia ImageFilter, RuntimeShaderBuilder, MaskFilter (via Skiko)
- Extract DrawBackdropExt.kt from DrawBackdropModifier for cross-platform drawing
- Implement SkSL highlight shaders for wasmJs (Default + Ambient)
- Remove @Language/@FloatRange annotations from commonMain
- Update build scripts for Compose Multiplatform (1.11.0-beta01)
- Retain Maven Central publish configuration
- Add .kotlin/ to .gitignore
@Kyant0
Copy link
Copy Markdown
Owner

Kyant0 commented Apr 2, 2026

There is already a kmp branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants