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

Flutter Deeplink在Android SDK30可用,SDK33+仅打开浏览器问题排查

Android SDK33深度链接直接跳转浏览器问题排查方案

可能的原因及对应解决方法

1. SDK33对应用链接验证的严格性提升

Android 13(SDK33)强化了android:autoVerify="true"的验证逻辑,即使Google Play控制台显示链接正常,本地测试设备可能未完成验证:

  • 排查点:检查服务器根目录下.well-known/assetlinks.json文件,确保包含**所有构建变体(debug/release)**的SHA256证书指纹,格式无语法错误。
  • 解决方案:
    • 生成debug和release包的SHA256指纹,全部添加到assetlinks.json中,示例格式:
      [
        {
          "relation": ["delegate_permission/common.handle_all_urls"],
          "target": {
            "namespace": "android_app",
            "package_name": "你的应用包名",
            "sha256_cert_fingerprints": ["DEBUG_SHA256", "RELEASE_SHA256"]
          }
        }
      ]
      
    • 确保设备网络正常,能访问该json文件(无代理、防火墙拦截),重启应用后重新触发验证。

2. adb测试命令的参数优先级问题

你当前使用的adb命令仅指定了BROWSABLE类别,SDK33下可能让浏览器的intent匹配优先级高于应用:

  • 解决方案:修改命令,同时添加DEFAULT类别,确保intent匹配更准确:
    .\adb shell 'am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -c android.intent.category.BROWSABLE -d "https://myApp.my-server.de/my-deeplink/1"'
    

3. 本地debug包未通过验证

Google Play控制台的验证基于release包的指纹,但本地测试的debug包指纹可能未加入assetlinks.json,导致SDK33设备判定应用未通过链接验证:

  • 解决方案:
    • 先测试Google Play商店安装的release包,验证深度链接是否正常跳转,排除debug包的问题。
    • 若需要debug测试,将debug包的SHA256指纹补充到assetlinks.json中,重新部署到服务器。

4. 设备应用链接验证状态异常

SDK33设备会单独存储每个应用的链接验证状态,若状态为“未验证”,系统会默认将链接交给浏览器处理:

  • 排查点:进入设备设置→应用→你的应用→打开为链接,查看是否显示“已验证”。
  • 解决方案:若显示“未验证”,检查assetlinks.json的配置是否正确,或手动清除应用缓存后重新触发验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:24:51