0. 问题现象
本来在Android用得是KeePass2Android, 可惜passkey功能到现在(20260907)都没上正式版, 暂且换为KeePassDX, 除了没有云端同步以外体感没区别.
KeePassDX passkey功能在ColorOS手机测试正常, 但在HyperOS测试异常
设备环境:
- Xiaomi 14 Pro
- Android 16 / 国行 HyperOS 3
- KeePassDX 包名:
com.kunzisoft.keepass.free
在 HyperOS 3 设置中已经将 KeePassDX 选择为密码/凭据服务,

但 Firefox、Chrome 等浏览器访问 WebAuthn 网站时, Android 仍然无法调用 KeePassDX, Passkey 注册会提示Registration ceremony was sent an abort signal.

1. 确认 ADB 已连接手机
本文不展开 ADB 安装及 USB 调试配置, 确保执行 adb devices 能正常识别手机即可.
2. 查看当前 Credential Provider
执行:
adb shell settings get secure credential_service
adb shell settings get secure credential_service_primary
输出
com.miui.contentcatcher/com.miui.credential.provider.XiaomiCredentialProviderService
两个设置项都指向小米自己的 Credential Provider.
结合后续修改后的测试结果,可以确认问题出在 HyperOS 对第三方 Credential Provider 的配置/加载这一环节.
3. 确认 KeePassDX 包名
PowerShell 下可以执行:
adb shell pm list packages | Select-String "keepass"
输出:
package:keepass2android.keepass2android
package:com.kunzisoft.keepass.free
KeePassDX 包名为:
com.kunzisoft.keepass.free
注意: 不同渠道安装的 KeePassDX 包名可能不同, 不建议直接照抄包名.
4. 查找 KeePassDX 的 CredentialProviderService
执行:
adb shell dumpsys package com.kunzisoft.keepass.free | Select-String -Pattern "CredentialProviderService" -Context 5,8
可以找到:
android.service.credentials.CredentialProviderService:
com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService
permission android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE
Action: "android.service.credentials.CredentialProviderService"
因此 KeePassDX 实际注册的 Credential Provider Component 为:
com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService
如果你的包名或 Service 名称与此不同, 后面的命令需要相应修改.
5. 将 KeePassDX 加入 Credential Provider
选择保留小米自己的 Credential Provider, 同时加入 KeePassDX:
adb shell settings put secure credential_service "com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService:com.miui.contentcatcher/com.miui.credential.provider.XiaomiCredentialProviderService"
然后将 KeePassDX 设置为 Primary Provider:
adb shell settings put secure credential_service_primary "com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService"
此处保留 Xiaomi Credential Provider 并非 KeePassDX 工作的必要条件, 是为了尽量减少对 HyperOS 原有配置的修改. 未测试完全移除 Xiaomi Provider 是否会影响其他系统功能.
6. 验证修改结果
执行:
adb shell settings get secure credential_service
>> com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService:com.miui.contentcatcher/com.miui.credential.provider.XiaomiCredentialProviderService
执行
adb shell settings get secure credential_service_primary
>> com.kunzisoft.keepass.free/com.kunzisoft.keepass.credentialprovider.passkey.PasskeyProviderService
可以确认 Settings.Secure 中的两个配置项已经修改成功.
7. 验证结果

可以看到已经可以正常激活KeepassDX的passkey.
虽然这里提示了可在所有小米设备使用, 但在实际register之后查看小米自己的密码app, 并没有在里面的通行密钥中看到刚刚保存的passkey.
根据issue和reddit部分用户反馈, 部分设备需要在重启后才能正常激活, 如果上述步骤后仍无法正常激活可尝试重启手机后验证.
8. 测试 Passkey
可以使用 WebAuthn 测试网站测试.
在确认 WebAuthn Demo 正常后, 再测试实际网站, 如 Cloudflare等.
9. 恢复小米默认 Credential Provider
adb shell settings put secure credential_service "com.miui.contentcatcher/com.miui.credential.provider.XiaomiCredentialProviderService"
adb shell settings put secure credential_service_primary "com.miui.contentcatcher/com.miui.credential.provider.XiaomiCredentialProviderService"
注意事项
上述设置完毕后, 如果不是 HyperOS大更新, 应该可以做到重启手机后依然配置不变(手动验证重启后不变).
但如果手动切换了Credential的provider, 会导致临时失效, 个人经验是在设置界面重新将Credential Provider设置为KeepassDX, 再将KeepassDX和浏览器清理后台后, 重新进入WebAuthn测试.
如果将provider切换成无会导致KeepassDX的adb配置被完全删除, 这时需要再执行一遍上文步骤.
参考资料
Passkey prompt not showing on Xiaomi
[Discussion] Fixing third-party passkey pprooviders on Chinese HyperOS using ADB