Skip to content

[Cherry-pick] Bundle kotlinx serialization ProGuard rules into the Compose plugin (#5314)#5317

Merged
Vlad Konstantinov (Kpotko) merged 1 commit into
release/1.8from
igor.demin/cherry/serialization-rules
May 12, 2025
Merged

[Cherry-pick] Bundle kotlinx serialization ProGuard rules into the Compose plugin (#5314)#5317
Vlad Konstantinov (Kpotko) merged 1 commit into
release/1.8from
igor.demin/cherry/serialization-rules

Conversation

@igordmn

@igordmn Igor Demin (igordmn) commented May 12, 2025

Copy link
Copy Markdown
Collaborator

Release Notes

#5314

…5314)

When users use `androidx.navigation`, they see `@Serialization`
annotation they can use, without explictly adding
`kotlinx.serialization`. They see, because it is added as an `api`
dependency.

The Compose Gradle plugin on the other hand provide `./gradlew
runRelease` task that uses ProGuard to minify binaries. Because the
plugin should support not only Compose, but also all support libraries
(androidx, components), we should bundle serialization ProGuard rules
into it.

Fixes https://youtrack.jetbrains.com/issue/CMP-8050

## Testing
```
import androidx.compose.ui.window.singleWindowApplication
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController

fun main() = singleWindowApplication {
    NavHost(
        navController = rememberNavController(),
        startDestination = LoginRoute()
    ) {
        composable<LoginRoute> {}
    }
}

sealed interface Route

@kotlinx.serialization.Serializable
data class LoginRoute(val id: Long? = null) : Route
```
Doesn't crash when run `./gradlew runRelease`

## Release Notes
### Fixes - Desktop
- Fix "Serializer for class is not found" using `androidx.navigation`
and running `./gradlew runRelease`
- `kotlinx.serialization` ProGuard rules are bundled in the Compose
Gradle plugin

(cherry picked from commit bffb159)
@igordmn Igor Demin (igordmn) changed the title Bundle kotlinx serialization ProGuard rules into the Compose plugin (#5314) [Cherry-pick] Bundle kotlinx serialization ProGuard rules into the Compose plugin (#5314) May 12, 2025
@igordmn

Copy link
Copy Markdown
Collaborator Author

@Kpotko Vlad Konstantinov (Kpotko) merged commit afe6a5b into release/1.8 May 12, 2025
13 of 14 checks passed
@Kpotko Vlad Konstantinov (Kpotko) deleted the igor.demin/cherry/serialization-rules branch May 12, 2025 13:33
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