Flutter开启Deep Link:默认Web链接支持关闭原因及配置咨询
Flutter Deep Link:默认Web链接支持关闭的原因及解决办法
问题描述
我正在为Flutter应用添加Deep Link,配置了如下Android Manifest规则:
<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" /> <data android:scheme="https" /> <data android:host="exempl.com" /> </intent-filter>
通过adb测试能正常唤起应用,但系统显示默认Web链接支持处于关闭状态(配图:
),想知道原因是什么?
原因分析
你看到的“默认Web链接支持关闭”,核心是Android App Links的自动验证未通过。
虽然你的intent-filter配置正确,adb测试能直接唤起应用(因为adb跳过了系统的验证环节),但当你设置android:autoVerify="true"时,系统会自动验证你的应用是否是该域名链接的合法处理者——只有通过验证,系统才会把你的应用设为该链接的默认打开方式,否则就会显示“支持关闭”。
解决步骤
要通过App Links验证,你需要完成以下操作:
配置域名的数字资产链接文件
在你的域名exempl.com的.well-known目录下,创建并放置assetlinks.json文件,内容格式如下:[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "你的Flutter应用包名", "sha256_cert_fingerprints": ["你的应用签名SHA256指纹"] } } ]注意:
- 包名要和你AndroidManifest里的
package属性一致; - SHA256指纹要和你签名应用的密钥匹配(debug和release密钥的指纹不同,测试阶段用debug密钥的指纹即可)。
- 包名要和你AndroidManifest里的
验证文件可正常访问
用浏览器直接访问https://exempl.com/.well-known/assetlinks.json,确保能直接返回上述JSON内容,没有404错误、跳转或权限拦截。触发系统重新验证
完成文件配置后,卸载并重新安装应用,或者执行以下adb命令强制刷新验证状态:adb shell pm set-app-links --package 你的应用包名 1 all重启应用后,再次检查Web链接支持状态,应该就会显示为开启了。
内容的提问来源于stack exchange,提问作者Kirill_Z
相关产品推荐
相关产品推荐

