You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMM项目中适配Android与iOS的Navigation Compose兼容版本咨询

问题解决:KMM中Navigation Compose iOS端崩溃的版本适配方案

核心报错原因

你的iOS端崩溃是因为引入了Android专属的Jetpack SavedState API:SavedStateRegistryController.performRestore是Android平台特有的类方法,iOS平台没有对应的实现,导致链接失败。这不是单纯的版本兼容问题,而是依赖选择错误——你使用的是Android-only的androidx.navigation:navigation-compose,而非适配KMM的Compose Multiplatform导航库。

修复步骤及最优版本组合

1. 替换导航依赖

移除原有的Android专属navigationCompose,改用Compose Multiplatform官方的导航库:

[versions]
# 新增Compose Multiplatform导航版本
composeNavigation = "1.9.3"

在[libraries]块中添加:

compose-navigation = { module = "org.jetbrains.compose.navigation:navigation", version.ref = "composeNavigation" }

并在多平台模块的sourceSets中为commonMain引入该依赖,而非仅限定Android平台。

2. 匹配兼容的全项目版本组合

以下是适配Kotlin 2.1.21、同时支持Android和iOS的稳定版本组合:

[versions]
agp = "8.6.0"
android-compileSdk = "35"
android-minSdk = "24"
android-targetSdk = "35"
androidx-activity = "1.9.3"
androidx-appcompat = "1.7.1"
androidx-core = "1.17.0"
androidx-espresso = "3.7.0"
androidx-lifecycle = "2.8.4"
androidx-testExt = "1.3.0"
composeMultiplatform = "1.9.3"
junit = "4.13.2"
kotlin = "2.1.21"
material3 = "1.2.1"
googleServices = "4.4.4"
gitliveFirebase = "1.13.0"
googleFirebase-common = "21.0.0"
googleFirebase-firestore = "25.0.0"
kotlinxSerializationJson = "1.7.3"
datastore ="1.1.1"
kotlinx-datetime = "0.7.1"
multiplatform-settings = "1.1.1"
composeNavigation = "1.9.3"

3. 额外注意事项

  • 所有Compose相关依赖(导航、Material3等)的版本必须与composeMultiplatform完全一致,避免版本差异引发兼容问题
  • 检查项目common代码中是否直接调用Android Jetpack SavedState相关逻辑,若有需通过expect/actual封装为Android平台专属实现,禁止在跨平台代码中引用Android专属API

内容的提问来源于stack exchange,提问作者Zinfine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 01:47:27