KMP项目添加Voyager依赖失败,求替代路由方案
问题解决方案
1. KMP项目中正确添加Voyager依赖的方式
由于Voyager 1.1.0-alpha01暂不支持wasm目标,你可以通过以下两种方式规避依赖解析失败的问题:
仅为支持的目标添加依赖
在共享模块的build.gradle.kts中,针对非wasm的目标单独声明Voyager依赖:sourceSets { val commonMain by getting { dependencies { // 保留其他通用依赖 } } val androidMain by getting { dependencies { implementation("cafe.adriel.voyager:voyager-navigator:1.1.0-alpha01") implementation("cafe.adriel.voyager:voyager-tab-navigator:1.1.0-alpha01") } } val iosMain by getting { dependencies { implementation("cafe.adriel.voyager:voyager-navigator:1.1.0-alpha01") implementation("cafe.adriel.voyager:voyager-tab-navigator:1.1.0-alpha01") } } // jvmMain、jsMain等其他支持的目标可按同样方式添加 }全局排除wasm变体
若想保持通用依赖声明的简洁性,可通过配置排除wasm目标的依赖变体:configurations.all { exclude(group = "cafe.adriel.voyager", module = "voyager-navigator", variant = "wasmJs") exclude(group = "cafe.adriel.voyager", module = "voyager-tab-navigator", variant = "wasmJs") // 其他Voyager模块需同步排除对应wasm变体 } dependencies { commonMainImplementation("cafe.adriel.voyager:voyager-navigator:1.1.0-alpha01") commonMainImplementation("cafe.adriel.voyager:voyager-tab-navigator:1.1.0-alpha01") }
2. 可替代Voyager的KMP路由方案
以下是几个适配多KMP目标的成熟路由方案,均支持Compose:
Compose Destinations
基于注解生成类型安全的路由代码,内置参数传递、深层链接等功能,适配Android、iOS、JVM、JS等主流目标。Decompose
遵循MVI架构的组件化框架,自带栈式、标签页等导航模式,对多平台生命周期管理做了针对性优化。Appyx
由JetBrains推出的导航框架,支持自定义过渡动画与复杂导航逻辑,适配包括wasm在内的绝大多数KMP目标。
内容的提问来源于stack exchange,提问作者FieryCat
相关产品推荐
相关产品推荐

