如何配置Expo使密码管理器关联应用与Web域名(Android问题)
Android密码管理器凭据配置失效排查方案
我已成功完成iOS端配置,让密码管理器能提供对应Web域名的凭据,但Android端按以下步骤配置后无法生效,求经验人士帮忙排查:
iOS 已生效的配置
- 在
app.json中添加关联域名:
"associatedDomains": [ "webcredentials:my.domain.com" ],
- 在Web域名根目录下部署
/.well-known/apple-app-site-association.json文件
Android 已完成的配置
1. 域名侧的assetlinks配置
在https://my.domain.com/.well-known/路径下放置assetlinks.json,内容:
[ { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://my.domain.com" } }, { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "android_app", "package_name": "com.domain.my", "sha256_cert_fingerprints": ["..."] } } ]
2. 应用侧的Intent Filter配置
在app.json中添加:
"intentFilters": [ { "action": "VIEW", "autoVerify": true, "data": [ { "scheme": "https", "host": "my.domain.com" } ], "category": ["DEFAULT", "BROWSABLE"] } ]
可优先排查的点
- SHA256指纹正确性:确认指纹是当前构建包所用签名证书的SHA256值,debug和release证书指纹不同,测试时要对应上,可通过
keytool -list -v -keystore 你的证书路径获取。 - assetlinks文件可用性:直接访问
https://my.domain.com/.well-known/assetlinks.json,检查是否能正常返回JSON,Content-Type必须是application/json,不能有301/302重定向或404错误。 - Intent Filter结构合法性:如果是用Expo等框架,要确认
intentFilters在app.json中的嵌套层级正确,比如是否在android字段下的intentFilters数组里。 - 系统验证状态:用adb命令
adb shell dumpsys package domain-preferred-apps查看,找到你的域名对应的条目,看verified字段是否为true,若为false则说明域名与应用的关联验证未通过。 - 密码管理器测试:先切换到系统自带的Google密码管理器测试,排除第三方密码管理器的兼容性问题。
- 包名与签名一致性:确保
package_name和应用实际包名完全一致,且签名证书和指纹匹配,debug包不能用release证书签名,反之亦然。
内容的提问来源于stack exchange,提问作者Johannes Dold
相关产品推荐
相关产品推荐

