【发布时间】:2018-10-12 23:09:52
【问题描述】:
当我们卸载并重新安装我们的独立应用程序时,当我们尝试通过 Expo.SecureStore 再次访问 Android Keystore 时,我们会在日志中抛出以下异常:
10-12 15:56:37.716 1793 1887 I ReactNativeJS: { [Error: Could not decrypt the item in SecureStore]
10-12 15:56:37.716 1793 1887 I ReactNativeJS: framesToPop: 1,
10-12 15:56:37.716 1793 1887 I ReactNativeJS: code: 'E_SECURESTORE_DECRYPT_ERROR',
10-12 15:56:37.716 1793 1887 I ReactNativeJS: line: 148,
10-12 15:56:37.716 1793 1887 I ReactNativeJS: column: 1889,
10-12 15:56:37.716 1793 1887 I ReactNativeJS: sourceURL: '/data/user/0/com.trinet.mobilev7/files/30.0.0/cached-bundle-experience-%40trinet%2Fmobilev7-737969915-30.0.0' }
当前的解决方法是进入设备设置 > 应用程序和通知 > 查看所有应用程序 > 我们的应用程序 > 清除数据。但是,我们要求我们的设备 UUID 缓存在 Keystore 中(我们用于在我们的推送通知服务的后端识别设备),以便它在重新安装之间保持不变。这适用于除 8.1.0 之外的其他版本的 Android(以及 iOS)。
以下设备出现错误:
- Nexus 5X
- 三星S9
- 小米
是否可以使用 Expo SDK 来解决此问题,或者我们是否必须等到 Expo 的下一个版本才能解决?
【问题讨论】:
-
如果您卸载/重新安装应用程序,则会清除该应用程序的所有数据。不清楚您在说什么,因为您还将清除数据列为问题和解决方法。
-
@JeffreyBlatman 更新了缺少信息的第一句话。问题是,当应用程序尝试访问 Android 密钥库时,会显示上述异常。据我所知,卸载从未从 Android/iOS 上的 Keystore/Keychain 中删除数据。只要安装了具有匹配包 ID 的新应用程序,它就可以访问以前安装的密钥库数据。
标签: javascript android react-native expo android-keystore