Android 13设备Firebase动态链接无法自动配置深层链接的原因
问题描述
我正在开发一款基于Flutter的应用,采用Firebase动态链接作为临时方案(已知该服务明年将被移除)。已按要求完成Manifest配置及Firebase控制台设置,配置的intent-filter如下:
<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:host="----------------" android:scheme="https"/> </intent-filter>
Firebase控制台已完成域名关联等基础设置,该功能在Android 11设备上运行正常:已安装应用时直接跳转至应用,未安装则跳转至回退链接。但在Android 13设备上,即使已安装应用,仍直接跳转至回退链接,需手动进入「设置>应用>应用名称>默认打开方式」添加允许链接后才能正常使用。
技术解决方案
1. 确保App Links验证通过(核心修复)
Android 13对App Links的自动验证逻辑更严格,android:autoVerify="true"依赖域名下的assetlinks.json文件完成验证:
- 检查你的域名
.well-known目录下是否存在assetlinks.json,文件需包含应用包名和SHA-256签名指纹,格式示例:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.your.package.name", "sha256_cert_fingerprints": ["你的应用SHA-256指纹"] } }]
- 用浏览器访问
https://你的域名/.well-known/assetlinks.json,确认内容可正常访问且无HTTPS证书错误 - 执行
adb shell pm get-app-links com.your.package.name命令,查看输出中对应域名的verified状态是否为true
2. 适配Android 13的权限与Intent Filter配置
- 确认intent-filter的
data标签配置完整,若动态链接有特定路径规则,需补充android:pathPrefix或android:path属性 - 避免多个intent-filter出现规则冲突,确保Firebase动态链接的intent-filter独立无重叠
3. 核对Firebase控制台配置
- 确认动态链接域名已正确关联到应用,且控制台中填写的SHA-256指纹与本地应用的debug/release签名完全一致
- 使用Firebase动态链接测试工具生成测试链接,验证跳转行为是否符合预期
4. 手动触发验证(调试场景)
若自动验证未生效,可通过ADB命令强制重新验证:
adb shell pm verify-app-links --re-verify com.your.package.name
执行后重启应用,再次测试动态链接跳转。
5. 临时兼容方案(验证受阻时)
如果上述方法暂时无法解决,可添加自定义Scheme的intent-filter作为补充,触发系统弹出应用选择弹窗:
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="----------------" android:scheme="your-app-scheme"/> <!-- 例如:myapp:// --> </intent-filter>
同时在Firebase控制台的动态链接设置中,将该自定义Scheme添加到应用关联链接列表。
内容的提问来源于stack exchange,提问作者Abin
相关产品推荐
相关产品推荐

