Flutter中firebase_dynamic_links在Android 13无法打开应用问题求助
针对Android 13下Firebase动态链接无法唤起Flutter应用的解决方案
以下是针对你遇到问题的具体排查和解决步骤:
1. 补全AndroidManifest的组件声明
Android 13对隐式Intent的组件要求更严格,必须显式声明android:exported="true",同时确保Intent Filter配置完整:
<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop"> <!-- 动态链接的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" /> <!-- 替换为你的Firebase动态链接域名,如xxx.page.link --> <data android:host="your-dynamic-link-domain.page.link" android:scheme="https" /> </intent-filter> </activity>
2. 验证Asset Links文件的正确性与可访问性
Android 13会严格校验域名下的assetlinks.json文件,确保满足以下要求:
- 文件路径必须是
https://你的域名/.well-known/assetlinks.json - 文件内容中的包名、SHA-256指纹必须与Firebase配置和应用签名完全一致,示例格式:
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.your.package.name", "sha256_cert_fingerprints": ["你的SHA-256指纹(大写冒号分隔)"] } } ]
直接用浏览器访问该链接,确认返回的JSON无格式错误且内容匹配。
3. 确认Firebase配置的SHA-256完整性
- 确保Debug和Release版本的SHA-256指纹都已添加到Firebase项目设置中
- 重新下载
google-services.json文件,替换到Flutter项目的android/app目录下,然后clean并重新构建项目
4. 升级firebase_dynamic_links版本
你当前使用的5.0.11版本可能对Android 13的适配存在缺陷,建议升级到兼容Flutter 3.3.9的最新稳定版本(如6.x系列),新版本通常会修复Android 13的兼容性问题。
5. 用ADB命令验证Intent唤起能力
通过ADB命令直接测试动态链接是否能唤起应用,排查是链接配置问题还是系统验证问题:
adb shell am start -W -a android.intent.action.VIEW -d "你的完整动态链接" com.your.package.name
如果命令能成功唤起应用,说明问题出在Firebase动态链接的云端配置或系统自动验证环节;如果失败,重点排查AndroidManifest的组件声明。
6. 检查应用签名一致性
确保Android 13设备上安装的应用签名,与Firebase配置的SHA-256指纹完全匹配。可通过以下命令查看当前应用的签名指纹:
keytool -list -v -keystore /path/to/your/keystore -alias your-key-alias
对比输出的SHA-256值与Firebase后台配置的内容。
内容的提问来源于stack exchange,提问作者Mohsen Namazi
相关产品推荐
相关产品推荐

