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

Android下带动态子域名的Expo Deep Link无法唤起应用问题排查

问题描述

希望用户访问https://subdomain.myapp.com/post这类含任意动态子域名的链接时唤起Expo(SDK 46)应用,已完成以下配置但链接始终仅在浏览器打开,无唤起应用选项:

当前配置内容

  1. app.json中的intentFilters配置:
"intentFilters": [
  {
    "action": "VIEW",
    "autoVerify": true,
    "data": [
      {
        "scheme": "https",
        "host": "*.myapp.com",
        "pathPattern": "/post"
      }
    ],
    "category": ["BROWSABLE", "DEFAULT"]
  }
]
  1. 所有子域名下已部署/.well-known/assetlinks.json文件:
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.app.app",
      "sha256_cert_fingerprints": ["XX:38:A6:XX:28:XX:72:BB:29:CF:C7:25:3E:05:85:A4:D0:00:98:83:11:64:12:C8:06:32:A5:70:7B:BC:71:XX"]
    }
  }
]
  1. 测试操作:生成新构建包后,测试Slack、Gmail中的链接,以及执行adb命令:
adb shell am start -W -a android.intent.action.VIEW -d "https://subdomain.myapp.com/post/my-post-id"

排查与解决方向

  • pathPattern匹配范围错误:当前配置的pathPattern: "/post"仅能精确匹配/post路径,但测试链接是/post/my-post-id,需修改为/post.*或/post/.*才能覆盖带后续路径的链接。Android的pathPattern规则中,*匹配任意非斜杠字符,.*匹配任意字符(包含斜杠),可根据实际需求选择。
  • assetlinks.json验证失效:
    • 确认文件的HTTP响应头Content-Type为application/json,服务器返回头错误会导致系统无法识别文件。
    • 核对SHA256指纹:使用keytool -list -v -keystore 你的密钥库文件.jks(或Expo生成的密钥库)获取对应构建版本(debug/release)的正确指纹,确保与文件中配置一致。
    • 验证文件可通过HTTPS正常访问,无重定向,且所有子域名下的该文件内容完全一致。
  • Expo构建缓存残留:执行expo prebuild --clean清理旧构建缓存后重新生成构建包,避免旧配置未更新。
  • 系统验证状态检查:运行adb shell pm get-app-links com.app.app查看应用链接的验证状态,若显示unverified,说明assetlinks.json配置存在问题,系统未通过验证。
  • 应用权限设置:部分设备需手动在应用设置中开启“打开支持的链接”权限,检查应用的默认打开方式配置。
  • 缩小测试范围:先测试精确匹配https://subdomain.myapp.com/post的链接,确认能唤起应用后,再测试带ID的路径链接,逐步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:50:27