Flutter Android Deep Links无法生效,请求技术排查帮助
排查Deep Links(App Links)无法自动打开的问题
以下是针对你配置的逐一排查点:
1. 验证assetlinks.json的正确性
- SHA256指纹必须匹配Google Play应用签名证书:确保你填写的
sha256_from_google_app_signing_cert是Google Play Console中「应用签名」页面的SHA256指纹(格式为冒号分隔的大写字符串,如AA:BB:CC:DD...),而非本地调试密钥或上传密钥的指纹。 - 包名完全一致:确认
package_name的值和AndroidManifest.xml中根标签manifest的package属性完全相同,大小写、后缀都不能错。 - 文件路径合规:
assetlinks.json必须放在域名的.well-known目录下,即访问路径为https://app.mydomain.online/.well-known/assetlinks.json,而非根目录或其他位置。
2. 检查AndroidManifest.xml配置
- Intent-Filter位置正确:确保带有
android:autoVerify="true"的<intent-filter>标签嵌套在你的主Activity(通常是MainActivity)的<activity>标签内部,不能放在<application>标签下直接作为子节点。 - 简化Data标签(可选但推荐):可以将多个
<data>标签合并为一个,避免潜在的匹配问题:
保留http scheme的话可以再加一个<data android:scheme="https" android:host="app.mydomain.online" /><data>标签,但测试时优先用https(App Links要求安全协议)。
3. 修正Firebase Hosting配置
- 修改
appAssociation值:将firebase.json中的"appAssociation": "NONE"改为"appAssociation": "ANDROID_APP_LINKS",Firebase会自动适配App Links的文件访问规则。 - 调整忽略规则:当前
ignore中的"**/.*"会忽略所有隐藏目录(包括.well-known),需要修改为:
确保"ignore": [ "firebase.json", "**/.*", "!.well-known", "**/node_modules/**" ].well-known目录能被正常部署到Firebase Hosting。
4. 测试与验证步骤
- 用官方工具验证关联关系:执行以下请求(替换你的域名),检查返回结果是否包含正确的包名和指纹:
curl "https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://app.mydomain.online&relation=delegate_permission/common.handle_all_urls" - ADB命令测试:安装应用后,用adb触发链接跳转,观察是否直接打开应用:
adb shell am start -W -a android.intent.action.VIEW -d "https://app.mydomain.online" - 清除默认应用缓存:前往系统设置 → 应用 → 你的应用 → 清除默认打开方式,避免之前的测试缓存影响结果。
- 确保测试环境符合要求:仅Android 6.0(API 23)及以上版本支持
autoVerify自动验证功能,低版本需要手动选择打开方式。
内容的提问来源于stack exchange,提问作者Ali Alqallaf
相关产品推荐
相关产品推荐

