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

Flutter Android 12 Deep Link无法跳转至APP问题求助

核心问题定位

Android 12及以上版本对App Links的验证逻辑更严格,你的assetlinks.json文件返回的Content-Type为application/octet-stream,不符合要求的application/json,导致域名验证失败(状态为legacy_failure),最终Deep Link被系统拦截,只能打开浏览器。

这是解决问题的关键,需确保服务器返回该文件时Content-Type为application/json,不同服务器的配置方式如下:

  • Nginx:在站点配置中添加
    location /.well-known/assetlinks.json {
        default_type application/json;
    }
    
  • Apache:在.htaccess或虚拟主机配置中添加
    AddType application/json .json
    
  • 静态托管平台(如Netlify/Vercel):在项目根目录的配置文件中指定MIME类型,以Netlify为例,在_netlify.toml中添加
    [[headers]]
    for = "/.well-known/assetlinks.json"
    [headers.values]
    Content-Type = "application/json"
    

验证修复结果:执行curl -I https://erecordstudio.com/.well-known/assetlinks.json,检查返回头中的Content-Type是否为application/json。

2. 重新触发域名验证

  • 清除应用的验证缓存:执行adb shell pm clear com.your.package.name(替换为你的Flutter应用包名)
  • 重新安装应用并打开一次,让系统重新发起验证请求
  • 再次检查验证状态:执行adb shell dumpsys package domain-preferred-apps,查找erecordstudio.com的状态,正常应为verified

3. 确认Manifest配置正确性

确保intent-filter的android:autoVerify="true"属性已正确添加,且data标签与域名匹配:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="https" android:host="erecordstudio.com" />
</intent-filter>

注意:如果存在多个intent-filter,每个需要自动验证的都要添加android:autoVerify="true"。

确认文件中的package_name与应用包名一致,sha256_cert_fingerprints为当前使用的签名证书指纹(测试用debug指纹,发布用release指纹),示例正确格式:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package.name",
    "sha256_cert_fingerprints": ["AA:BB:CC:..."]
  }
}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:40:27