卸载共享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
相关产品推荐
相关产品推荐

