为何assetlinks.json无法将应用链接重定向至Flutter应用?
App Links 失效跳转至Firebase默认页面的排查方案
之前App Links配置正常,隔了段时间没测试突然失效了——现在点应用链接直接跳去浏览器,显示:
Welcome Firebase Hosting Setup Complete
你的现有配置如下:
当前配置情况
- 已经在Firebase托管的应用里,把
assetlinks.json部署到了https://web-url/.well-known/assetlinks.json路径 - AndroidManifest.xml的配置:
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" /> <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="https" android:host="weburl.web.app" android:pathPrefix="/myPathPrefix" />
- assetlinks.json的配置:
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.myapp", "sha256_cert_fingerprints": [ "" ] } } ]
排查修复步骤
补全SHA256证书指纹
你的assetlinks.json里sha256_cert_fingerprints是空的,这是最关键的问题。Android必须验证应用签名指纹和配置匹配,才会触发App Links跳转,空指纹直接导致验证失败。- 获取指纹方法:
- 调试包:执行命令
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android,提取SHA256值 - 正式包:用你的正式签名文件执行类似命令,把得到的SHA256值(格式如
AA:BB:CC:DD...)填入数组的引号里
- 调试包:执行命令
- 获取指纹方法:
确认assetlinks.json可正常访问
- 直接在浏览器打开
https://web-url/.well-known/assetlinks.json,检查返回的JSON格式正确,包名和指纹(补全后)无误 - 检查Firebase Hosting的重写规则,别让这个路径被重定向到默认的欢迎页面
- 直接在浏览器打开
核对Manifest配置一致性
- 确认
android:host的值和你部署assetlinks.json的域名完全一致(比如你写的weburl.web.app和实际的web-url是不是有拼写差异) - 测试的链接路径要符合
pathPrefix="/myPathPrefix"的规则,别用了不符合前缀的链接来测试
- 确认
重新触发自动验证
- 卸载应用后重新安装,或者用
adb shell pm clear com.android.vending清除Google Play的验证缓存,再测试链接 - 也可以用Android Studio的App Links Assistant工具扫描链接,快速验证配置是否正确
- 卸载应用后重新安装,或者用
内容的提问来源于stack exchange,提问作者Noah
相关产品推荐
相关产品推荐

