Flutter配置Deep Link报错,添加AndroidManifest代码仍未解决
Flutter Deep Link 配置排查方案
- 先确认intent-filter的位置:得放在主Activity标签里(一般是
io.flutter.embedding.android.FlutterActivity),别放到其他Activity或者Application标签下,不然系统识别不到。 - 核对URI匹配逻辑:
- 测试的链接必须是
https://www.example.com/gizmos开头的,比如https://www.example.com/gizmos/test没问题,但https://example.com/gizmos(没带www)、http://www.example.com/gizmos(用的http协议)都不行。 - 要是想兼容不带www的域名,要么加个额外的
<data>节点,要么把host改成example.com再加android:includeSubdomains="true"属性。
- 测试的链接必须是
- 检查Flutter端的路由处理:
- 得确保Flutter代码里已经监听了Deep Link,比如用
Uri.base拿跳转链接,或者用插件的话要初始化对。示例代码:void main() { WidgetsFlutterBinding.ensureInitialized(); // 获取Deep Link参数 final uri = Uri.base; if (uri.path.startsWith('/gizmos')) { // 写你的跳转逻辑 } runApp(MyApp()); }
- 得确保Flutter代码里已经监听了Deep Link,比如用
- 重新构建再测试:
- 别用热重载,必须重新编译APK装到设备上(用
flutter build apk打包后安装,或者直接flutter run --release),因为AndroidManifest改了之后得重新打包才生效。 - 测试可以用adb命令:
adb shell am start -W -a android.intent.action.VIEW -d "https://www.example.com/gizmos/test" com.your.package.name,记得把com.your.package.name换成你自己的应用包名。
- 别用热重载,必须重新编译APK装到设备上(用
- 检查系统设置:
- 确认你的应用是这个链接的默认打开应用,有时候系统弹选择器,要是之前选了别的应用,得去应用设置里清掉默认打开方式。
- 处理HTTPS链接验证(可选):
- 用HTTPS scheme的话,有些设备要验证域名关联,得在域名根目录放个
assetlinks.json文件,证明你的应用有权处理这个域名的链接。文件格式参考:[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.your.package.name", "sha256_cert_fingerprints": ["你应用签名的SHA256指纹"] } }] - SHA256指纹可以用
keytool -list -v -keystore your_keystore.jks命令获取。
- 用HTTPS scheme的话,有些设备要验证域名关联,得在域名根目录放个
内容的提问来源于stack exchange,提问作者Mobile Dev
相关产品推荐
相关产品推荐

