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

Jetpack Navigation如何将DeepLink存为Kotlin与XML均可引用的常量

Android跨Kotlin/XML统一DeepLink常量方案

共有两种成熟方案可实现一处定义、两端复用,无需硬编码:


方案1:单字符串资源+占位替换(零额外配置,最常用)

直接在字符串资源中定义带导航参数占位格式的DeepLink,Kotlin端使用时替换占位符即可:

  1. 定义字符串资源
<!-- values/strings.xml -->
<string name="deeplink_prefix">android-app://example.google.app</string>
<string name="fragment_two_deeplink">@string/deeplink_prefix/fragment_two/{arg}</string>
  1. 导航图XML直接引用
<!-- nav_graph.xml 可直接识别大括号参数格式 -->
<deepLink app:uri="@string/fragment_two_deeplink" />
  1. Kotlin代码中替换占位符使用
val argValue = "传入的参数值"
val targetUri = context.getString(R.string.fragment_two_deeplink)
    .replace("{arg}", argValue)
    .toUri()
val request = NavDeepLinkRequest.Builder
    .fromUri(targetUri)
    .build()

如果有多个参数,按格式增加{param1}、{param2}占位逐一替换即可。


方案2:Gradle统一配置(源头唯一,适合多模块共享)

如果需要多模块全局复用,可在Gradle中定义一次常量,同时生成Kotlin可用的BuildConfig字段和XML可用的字符串资源:

  1. 模块build.gradle.kts配置
android {
    // 开启BuildConfig生成
    buildFeatures {
        buildConfig = true
    }
    defaultConfig {
        // 统一定义DeepLink相关常量
        val deeplinkPrefix = "android-app://example.google.app"
        val fragmentTwoDeeplink = "$deeplinkPrefix/fragment_two/"
        
        // 生成Kotlin端可调用的BuildConfig常量
        buildConfigField("String", "DEEPLINK_PREFIX", "\"$deeplinkPrefix\"")
        buildConfigField("String", "FRAGMENT_TWO_DEEPLINK", "\"$fragmentTwoDeeplink\"")
        
        // 生成XML端可调用的字符串资源
        resValue("string", "deeplink_prefix", deeplinkPrefix)
        resValue("string", "fragment_two_deeplink", fragmentTwoDeeplink)
    }
}
  1. 导航图XML使用
<!-- 直接拼接资源和参数占位即可 -->
<deepLink app:uri="@string/fragment_two_deeplink{arg}" />
  1. Kotlin代码使用
val argValue = "传入的参数值"
val targetUri = "${BuildConfig.FRAGMENT_TWO_DEEPLINK}$argValue".toUri()
val request = NavDeepLinkRequest.Builder
    .fromUri(targetUri)
    .build()

注意事项

  • 导航图中声明的argument名称要和DeepLink中大括号内的参数名完全一致,否则参数解析会失败
  • 公共前缀建议单独抽离,后续修改域名/Scheme只需要修改一处即可全局生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:57:03