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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:52:07