You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

卸载共享accessGroup的App后Android CryptoFailedException问题咨询

跨App令牌迁移后卸载源App导致RN Keychain读取失败问题

背景与配置

我正在将旧版Cordova应用(App A)迁移至React Native应用(App B),为避免用户重新登录,通过Deep Linking实现令牌迁移。两款App配置了相同的sharedUserId,React Native端使用带指定accessGroup的配置调用react-native-keychain:

const SHARED_CONFIG = {
    service: 'com.exemple.auth',
    accessGroup: 'com.exemple.shared', // 用于跨App共享
    storage: Keychain.STORAGE_TYPE.RSA,
    accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED,
};

工作流程

  • App B通过Deep Link唤起App A;
  • App A从存储中取出令牌并返回给App B;
  • App B调用Keychain.setGenericPassword保存令牌;
  • 此时一切正常,重启App B可成功读取令牌。

问题现象

卸载App A后重启App B,读取令牌失败,报错:

com.oblador.keychain.exceptions.CryptoFailedException: Decryption failed: Authentication tag verification failed. This usually indicates that the encrypted data was modified, corrupted, or is being decrypted with the wrong key.

通过ADB仍能看到加密文件/data/data/com.exemple.charge/files/datastore/RN_KEYCHAIN.preferences_pb。

已尝试操作

  • 移除配置中的accessGroup和storage: RSA,但之前带这些标志写入的数据仍存在读取问题;
  • 推测卸载App A时,Android Keystore会使共享组关联的密钥失效,即便App B仍处于安装状态。

咨询问题

  • 为何卸载同accessGroup的“兄弟”App会使剩余App的Keystore条目失效?
  • 能否让迁移后的Keystore条目独立,在源App卸载后仍可用?
  • Android上的STORAGE_TYPE.RSA是否对同sharedUserId下其他App的存在特别敏感?

环境信息

  • React Native: 0.7x
  • react-native-keychain: ^8.1.1
  • Android 13/14(物理设备)

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:22:30