为 Android 配置应用链接
了解如何为使用 Flutter 构建的 Android 应用配置应用链接。
深度链接是一种通过 URI 启动应用的机制。该 URI 包含 scheme、host 和 path,可将应用打开到特定屏幕。
应用链接 是一种使用 http 或 https 的深度链接,仅适用于 Android 设备。
配置应用链接需要拥有自己的网站域名。否则,可考虑使用 Firebase Hosting 或 GitHub Pages 作为临时方案。
配置好深度链接后,你可以验证它们。了解更多,请参阅 验证深度链接。
1. 自定义 Flutter 应用
#
编写能处理传入 URL 的 Flutter 应用。本示例使用 go_router package 处理路由。
Flutter 团队维护 go_router package。它提供简单的 API 来处理复杂的路由场景。
-
要创建新应用,输入
flutter create <app-name>:flutter create deeplink_cookbook -
要在应用中包含
go_routerpackage,向项目添加go_router依赖:要将
go_routerpackage 添加为依赖,运行flutter pub add:flutter pub add go_router -
要处理路由,在
main.dart文件中创建GoRouter对象:main.dartdartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; void main() => runApp(MaterialApp.router(routerConfig: router)); /// This handles '/' and '/details'. final router = GoRouter( routes: [ GoRoute( path: '/', builder: (_, _) => Scaffold( appBar: AppBar(title: const Text('Home Screen')), ), routes: [ GoRoute( path: 'details', builder: (_, _) => Scaffold( appBar: AppBar(title: const Text('Details Screen')), ), ), ], ), ], );
2. 修改 AndroidManifest.xml
#-
使用 VS Code 或 Android Studio 打开 Flutter 项目。
-
导航到
android/app/src/main/AndroidManifest.xml文件。 -
在带有
.MainActivity的<activity>标签内添加以下元数据标签和 intent filter。将
example.com替换为你自己的网站域名。xml<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="http" android:host="example.com" /> <data android:scheme="https" /> </intent-filter>
3. 托管 assetlinks.json 文件
#
在你拥有的域名的 Web 服务器上托管 assetlinks.json 文件。该文件告诉移动浏览器应打开哪个 Android 应用,而不是浏览器。要创建该文件,请获取上一步创建的 Flutter 应用的 package 名称,以及用于构建 APK 的签名密钥的 sha256 指纹。
Package 名称
#
在 AndroidManifest.xml 中查找 package 名称,即 <manifest> 标签下的 package 属性。
Package 名称通常格式为 com.example.*。
sha256 指纹
#具体流程可能因 APK 签名方式而异。
使用 Google Play 应用签名
#你可以直接从 Play 开发者控制台找到 sha256 指纹。在 Play 控制台中打开你的应用,在 Release > Setup > App Integrity > App Signing 标签下:
使用本地 keystore
#如果你在本地存储密钥,可以使用以下命令生成 sha256:
keytool -list -v -keystore <path-to-keystore>
assetlinks.json
#托管的文件应类似如下:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.deeplink_cookbook",
"sha256_cert_fingerprints":
["FF:2A:CF:7B:DD:CC:F1:03:3E:E8:B2:27:7C:A2:E3:3C:DE:13:DB:AC:8E:EB:3A:B9:72:A1:0E:26:8A:F5:EC:AF"]
}
}]
-
将
package_name值设为你的 Android 应用 ID。 -
将 sha256_cert_fingerprints 设为上一步获得的值。
-
Host the file at a URL that resembles the following:
<webdomain>/.well-known/assetlinks.json
在类似以下结构的 URL 托管该文件:
<webdomain>/.well-known/assetlinks.json
验证浏览器能否访问该文件。
测试
#
你可以使用真机或模拟器测试应用链接,但请先在设备上至少执行一次 flutter run。这确保 Flutter 应用已安装。
要仅测试应用配置,使用 adb 命令:
adb shell 'am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://<web-domain>/details"' \
<package name>
要同时测试 Web 和应用配置,你必须通过 Web 浏览器或其他应用直接点击链接。一种方法是创建 Google 文档,添加链接并点击它。
如果一切配置正确,Flutter 应用会启动并显示详情屏幕:
附录
#除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-04。查看文档源码 或者 为本页面内容提出建议。