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

Flutter使用uni_links实现深度链接遇Activity解析错误求助

深度链接「无法解析Intent」问题排查方案

1. 先确认adb测试命令正确性

确保使用的命令格式正确,替换成你的包名和深度链接:

adb shell am start -W -a android.intent.action.VIEW -d "https://your-domain.com/user/123" com.your.app.package
  • 重点检查:包名是否和AndroidManifest.xml里的package属性完全一致;链接是否和intent-filter中配置的data规则匹配。

2. 校验AndroidManifest.xml的intent-filter配置

Deep Links配置示例(自定义scheme)

确保配置在主MainActivity内:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 自定义scheme -->
    <data android:scheme="yourapp" />
    <data android:host="profile" />
</intent-filter>

App Links配置示例(HTTPS scheme)

必须包含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="your-domain.com"
        android:pathPrefix="/user/" />
</intent-filter>
  • 注意:不要把多个intent-filter的规则混写,分开配置Deep Links和App Links。
  • 确保文件放在域名的.well-known目录下,访问路径应为:https://your-domain.com/.well-known/assetlinks.json
  • 文件内容必须包含正确的包名和SHA256指纹(区分debug和release证书),示例:
[
    {
        "relation": ["delegate_permission/common.handle_all_urls"],
        "target": {
            "namespace": "android_app",
            "package_name": "com.your.app.package",
            "sha256_cert_fingerprints": ["AA:BB:CC:..."]
        }
    }
]
  • 可以用Android Studio的「App Links Assistant」工具(Tools > App Links Assistant)来验证文件是否符合要求,以及域名验证状态。

4. 检查Flutter端的链接处理逻辑

  • 确保uni_links的初始化代码正确,同时监听初始链接和实时链接:
Future<void> initUniLinks() async {
  // 处理初始启动链接
  final initialUri = await getInitialUri();
  if (initialUri != null) {
    _handleUri(initialUri);
  }
  // 处理后续传入的链接
  uriLinkStream.listen((Uri? uri) {
    if (uri != null) {
      _handleUri(uri);
    }
  }, onError: (err) {
    // 处理错误
  });
}

void _handleUri(Uri uri) {
  // 交给routemaster处理路由
  Routemaster.of(context).push(uri.path);
}
  • 确认routemaster的路由规则匹配链接路径,比如链接是/user/123,路由配置要对应:
final routes = RouteMap(
  routes: {
    '/user/:id': (routeData) => UserProfilePage(id: routeData.pathParameters['id']!),
  },
);

5. 其他排查点

  • 测试设备需为Android 6.0(API 23)及以上,App Links才会生效;
  • 如果是debug包,确保assetlinks.json中使用的是debug证书的SHA256指纹(可通过keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey获取);
  • 检查是否有其他Activity配置了相同的scheme/host规则,导致系统无法确定启动目标;
  • 先用自定义scheme的Deep Links测试(比如yourapp://profile/123),如果能正常启动,说明问题出在App Links的域名验证环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:06:23