Firebase Web应用Flutter App Link无法唤起App问题排查
问题排查与解决方案
更换新URL后无法唤起App但旧URL正常,核心问题集中在新域名的Android App Links验证未通过,以下是具体排查点和修复步骤:
1. 修正flutter_deeplinking_enabled配置
你当前将flutter_deeplinking_enabled设为false,但通过Android原生intent-filter处理deeplink时,需将该值改为true,否则Flutter无法接收原生路由的deeplink请求。修改后重新打包:
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
2. 确认assetlinks.json的有效性
新域名的https://wishlist-88d58.web.app/.well-known/assetlinks.json必须满足:
- 可通过HTTPS直接访问,返回200状态码,无跳转
- 文件语法无错误(如引号转义、逗号遗漏)
- 包名和SHA256指纹与当前使用的App完全匹配(注意区分调试版/发布版指纹:调试版来自Android Studio默认的debug keystore,发布版来自你的签名密钥)
3. 检查App Links验证状态
连接设备后执行以下adb命令,查看新域名的验证结果:
adb shell dumpsys package domain-preferred-apps | grep wishlist-88d58.web.app
若输出包含status: 0,说明域名与App的关联验证失败,需重新检查assetlinks.json的内容和可访问性。
4. 清除设备缓存与重置域名偏好
设备可能缓存了旧的验证信息,执行以下操作:
- 卸载并重新安装App
- 清除浏览器缓存(尤其是Chrome,它会缓存App Links验证结果)
- 执行adb命令重置域名偏好设置:
adb shell pm clear-domain-preferences
5. 确认Firebase Hosting部署配置
若使用Firebase Hosting托管新域名,需确保:
firebase.json中未设置忽略.well-known目录的规则- 重新执行
firebase deploy,确保assetlinks.json已部署到服务器
6. 规范intent-filter配置
当前intent-filter配置逻辑正确,可优化为合并scheme与host的写法(不影响功能,但更规范):
<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" android:host="wishlist-88d58.web.app" /> <data android:scheme="https" android:host="wishlist-88d58.web.app" /> </intent-filter>
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

