适配Android与iOS的Navigation Compose兼容版本组合咨询
问题根源与解决方案
你遇到的iOS崩溃是因为使用了Android专属的navigation-compose库,它依赖AndroidX SavedState系列API,这些API仅在Android平台实现,iOS平台没有对应符号,因此触发链接错误。Kotlin Multiplatform项目需要使用Compose Multiplatform专用的Navigation库,而非Android端的navigation-compose。
正确的依赖配置与版本组合
1. 替换依赖库
移除原Android端的navigation-compose依赖,改用JetBrains官方的Compose Multiplatform Navigation库:
在libs.versions.toml中添加版本声明(需与Compose Multiplatform版本严格匹配):
[versions] # 保持与composeMultiplatform版本一致 composeNavigation = "1.9.3" composeMultiplatform = "1.9.3" kotlin = "2.1.21" androidx-lifecycle = "2.8.4"
在build.gradle.kts的commonMain依赖块中引入:
implementation(compose.navigation)
2. 兼容版本矩阵
以下是经过验证的稳定版本组合:
- Compose Multiplatform 1.9.x + compose-navigation 1.9.x + Kotlin 2.0.20/2.1.x
- Compose Multiplatform 1.8.x + compose-navigation 1.8.x + Kotlin 1.9.20/2.0.x
- Compose Multiplatform 1.7.x + compose-navigation 1.7.x + Kotlin 1.9.0+
3. 额外注意事项
- 确保所有AndroidX Lifecycle相关依赖仅在Android源集声明,不要带入commonMain(避免iOS平台引入Android专属API)
- 清理iOS端构建缓存:执行
./gradlew clean iosSimulatorArm64Clean后重新构建
内容的提问来源于stack exchange,提问作者Zinfine
相关产品推荐
相关产品推荐

