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

配置GoRouter Deep Link后Flutter应用无法通过adb启动,求调试方向

针对你遇到的adb测试Deep Link无法启动应用的问题,可以从以下几个方向逐一排查:

  • 先确认adb命令的正确性
    把命令里的<web-domain>替换成实际的my.website或my.second.website,去掉不必要的转义字符后直接执行:

    adb shell am start -a android.intent.action.VIEW \
        -c android.intent.category.BROWSABLE \
        -d "http://my.website/details"
    

    执行后查看输出信息,如果提示No activity found to handle intent,说明系统找不到匹配的Activity;如果有其他错误提示,直接根据提示排查。

  • 检查AndroidManifest中intent-filter的位置
    确保包含Deep Link配置的<intent-filter>是放在<activity>标签内部(通常是Flutter的MainActivity),而非直接放在<application>标签下。错误的位置会导致系统无法识别该Activity可处理Deep Link。

  • 验证intent-filter的匹配规则

    • 确认android:host和adb命令中的域名完全一致,避免拼写错误;
    • 先简化测试:用http://my.website(不带路径)尝试启动应用,排除路径匹配的问题;
    • 检查autoVerify="true"的影响:如果数字资产验证未通过,系统会跳过你的应用直接打开浏览器。可通过以下命令查看域名的首选应用:
      adb shell dumpsys package domain-preferred-apps
      
      若输出中找不到你的应用包名对应的域名,说明autoVerify未通过,需重新核对签名和assetlinks.json配置。
  • 检查GoRouter的路由配置
    确保GoRouter中已正确注册/details路由并支持Deep Link:

    GoRouter(
      routes: [
        GoRoute(
          path: '/details',
          builder: (context, state) => const DetailsScreen(),
        ),
      ],
    )
    

    同时确认Flutter端已完成GoRouter初始化,无拦截Deep Link的自定义逻辑。

  • 核对应用签名与assetlinks.json
    确认应用签名的SHA-256值和assetlinks.json中的完全一致,可通过以下命令获取签名信息:

    keytool -list -v -keystore your-keystore-path.jks
    

    对比输出的SHA-256值与assetlinks.json里的sha256_cert_fingerprints字段。

  • 使用Android Studio工具辅助排查
    打开Android Studio的Tools > App Links Assistant,按向导完成以下操作:

    1. 检查AndroidManifest的Deep Link配置;
    2. 验证assetlinks.json的有效性;
    3. 直接在工具中测试链接跳转,确认是否能启动应用。

内容的提问来源于stack exchange,提问作者César

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:15:56