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

Firebase Hosting托管网站无法通过Deep Link打开Flutter应用求助

Firebase Hosting下Flutter Deep Link失效排查方案

核心问题定位

你用adb测试Deep Link逻辑正常,但实际通过域名触发失效,结合Firebase Hosting的配置,大概率是静态资源部署规则或请求路由的问题,以下是具体排查和修复步骤:


1. 修正ignore规则,确保.well-known文件被部署

你的firebase.json中ignore配置包含**/.*,这会匹配所有隐藏目录(包括.well-known),导致该目录下的文件被跳过部署。修改规则如下:

"ignore": [
  "firebase.json",
  "**/node_modules/**",
  "**/.*[!.well-known]" // 排除.well-known目录,允许其被部署
]

或者更精准地指定需要忽略的隐藏文件:

"ignore": [
  "firebase.json",
  ".git/**",
  "**/node_modules/**"
]

2. 调整rewrites规则,避免.well-known请求被重定向

当前的rewrites会把所有请求都导向index.html,包括对.well-known下文件的请求,导致系统无法获取验证文件。修改为:

"rewrites": [
  {
    "source": "!/(.well-known/**)", // 排除.well-known路径的重写
    "destination": "/index.html"
  }
]

3. 配置appAssociation为FILE,使用自定义验证文件

Firebase Hosting默认会自动生成apple-app-site-association文件,覆盖你自定义的内容。需要显式指定使用自己的文件:

"hosting": {
  "public": "public",
  "ignore": [/* 修正后的规则 */],
  "appAssociation": "FILE", // 关键配置,使用自定义的关联文件
  "rewrites": [/* 修正后的规则 */]
}

4. 验证文件是否正确部署并可访问

执行firebase deploy --only hosting重新部署后,通过以下方式验证:

  • 用curl访问:curl https://<你的域名>/.well-known/assetlinks.json,确认返回正确的JSON内容,且HTTP状态码为200
  • 同样验证apple-app-site-association:curl https://<你的域名>/.well-known/apple-app-site-association,确保返回内容与你本地文件一致,且没有被重定向到index.html

5. 检查验证文件的格式正确性

  • assetlinks.json:确认package_name与AndroidManifest中的包名完全一致,sha256_cert_fingerprints是Google Play Console中显示的十六进制指纹(格式为AA:BB:CC:...,无多余空格)
  • apple-app-site-association:确认appID是TeamID.BundleID的格式,paths配置无语法错误(你用["*"]没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:11:04