Flutter Android端Deep Link无法唤起应用问题排查求助
Android端浏览器无法唤起Flutter Deep Link的排查方案
以下是针对你遇到的问题的具体排查方向和解决方法:
1. 启用Flutter Deep Link元数据
你的AndroidManifest.xml中注释了<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />,请取消这行注释。Flutter依赖该元数据对接Android的App Links机制,缺失它会导致系统无法正确识别应用的Deep Link处理能力。
2. 验证Asset Links文件的核心配置
SHA256指纹匹配问题
确保assetlinks.json中sha256_cert_fingerprints的值与当前测试应用的签名指纹完全一致:
- 调试包和发布包的SHA256指纹是独立的,测试调试包时必须使用调试签名的指纹,测试发布包时用发布签名的指纹。
- 可通过以下命令获取指纹:
keytool -list -v -keystore 你的签名文件路径
文件访问与格式验证
- 直接在浏览器访问
https://app.name.com/.well-known/assetlinks.json,确认能正常返回JSON内容,且响应头的Content-Type为application/json(你的Firebase Hosting配置已设置该头,但仍需实际验证)。 - 检查JSON格式是否合法,确保引号、逗号等符号无语法错误,SHA256指纹是完整的字符串(你提供的代码中指纹部分有省略,需确认完整值正确)。
3. 检查系统的App Links验证状态
在设备的设置 → 应用 → 你的应用 → 打开方式中,查看是否显示“由网站验证”的标识:
- 如果没有该标识,说明系统未通过
assetlinks.json验证应用与域名的关联,此时浏览器不会自动唤起应用,只会显示选择界面或直接打开网页。
4. 浏览器的App Links支持与用户设置
- 确保使用支持App Links的浏览器(如Chrome),部分第三方浏览器可能不支持自动唤起逻辑,仅显示选择提示。
- Chrome首次访问链接时,需用户手动选择“始终允许”唤起应用;若之前选择过“仅一次”或“打开网页”,需在应用设置中重置默认打开方式。
5. 调试包与发布包的差异验证
如果你测试的是调试包,务必确认assetlinks.json中配置的是调试签名的SHA256指纹——多数开发者会误用发布包指纹,导致调试包无法通过验证。
补充验证命令
可以使用不带包名的adb命令测试,观察系统的处理行为:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://app.name.com"
- 若弹出应用选择框包含你的应用,说明Intent Filter配置正常,但App Links验证未通过;
- 若直接打开网页,说明Intent Filter或验证环节存在问题。
内容的提问来源于stack exchange,提问作者Ali Alqallaf
相关产品推荐
相关产品推荐

