【问题标题】:Expo - error accessing Keystore after re-installation of App on Android 8.1.0Expo - 在 Android 8.1.0 上重新安装 App 后访问 Keystore 时出错
【发布时间】: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


【解决方案1】:

我查看了 AOSP 源代码。 AFAICT 自 2013 年左右(大约是 Android 开始提供密钥库服务的时间)以来,在删除应用程序时删除与应用程序关联的密钥库条目的代码一直存在。见PackageManagerService中的方法removeKeystoreDataIfNeeded()

就常识而言,在删除应用程序时保留应用程序创建的密钥库条目没有多大意义。

我们要求我们的设备 UUID 缓存在 Keystore 中

Android 不断改进以防止应用这样做。作为常规应用程序,您应该无法在安装应用程序时跟踪设备。你不应该做不到,从道德上讲,你不应该尝试。如果用户卸载您的应用,他们有权被您的应用“遗忘”。如果您想重新关联您的应用程序,您的系统应该有某种登录方式,这使得用户明确选择重新关联您的系统。您可以在此处阅读更多相关信息: https://developer.android.com/training/articles/user-data-ids

【讨论】:

    【解决方案2】:

    尝试清除移动设备上的残留数据。雾可能是您通过运行您的应用程序存储了一些东西,并且在卸载时没有清除。

    不仅要清除缓存,还要清除残留数据。

    希望这会有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多