【问题标题】:How to resolve KeyStoreConnectException on Android 10?如何解决 Android 10 上的 KeyStoreConnectException?
【发布时间】:2020-06-14 08:57:31
【问题描述】:

我的应用在除 Android 10 之外的所有 Android 操作系统上运行良好。我正在使用已更新为 Android 10 的 Motorola One Power 设备。我们正在使用 Android Keystore 加密数据库。

应用程序在 luanch 上崩溃并出现以下错误。

android.security.keystore.KeyStoreConnectException:无法与密钥库服务通信 在 android.security.keystore.AndroidKeyStoreCipherSpiBase.ensureKeystoreOperationInitialized(AndroidKeyStoreCipherSpiBase.java:256) 在 android.security.keystore.AndroidKeyStoreCipherSpiBase.engineInit(AndroidKeyStoreCipherSpiBase.java:148) 在 javax.crypto.Cipher.tryTransformWithProvider(Cipher.java:2980)

这是一个 KeyStoreConnectException 问题。应用程序需要时间连接到 KeyStoreConnectException。

注意:如果我在调试模式下运行应用程序,那么它工作正常。

请帮助我找到解决方案。提前致谢。

【问题讨论】:

  • 我有同样的问题,我意识到只有在后台线程上使用密码时才会发生这种情况。如果我在主线程上执行它就可以了。你找到解决办法了吗?
  • 我在主线程上使用它,但在 Crashlytics 中仍然出现此错误
  • 你设法解决了这个错误吗?

标签: android android-keystore android-security keystore-access


【解决方案1】:

我觉得你的代码运行时间比较长,可以移到线程,试试看!

【讨论】:

    【解决方案2】:

    这是一个在此处跟踪的已知错误https://issuetracker.google.com/issues/147384380

    Google 修复了它,可能会在 Android 11 中可用。

    我们目前不知道它是否会在某个时候通过 Android 10 上的安全补丁修复

    【讨论】:

      【解决方案3】:

      正如 MatPag 所指出的,这是 Android 10 中的 known bug,在早期或更高版本中不存在。当我在几个地方调用 Cipher::init() 时,这里是 Kotlin 中一个方便的包装函数:

      private fun keyStoreWorkaroundForAndroid10(f: () -> Unit) {
          for (i in 0..3) {
              try {
                  f()
                  return
              } catch (e: ProviderException) {
                  Timber.d("Applying Android 10 KeyStoreConnectException bug workaround. Counter: ${i}, Exception: ${e.message}")
                  Thread.sleep(100)
                  continue
              }
          }
      }
      

      然后你这样称呼它(记住 - 在后台线程中):

      keyStoreWorkaroundForAndroid10 {
          cipherEncrypt.init(Cipher.ENCRYPT_MODE, publicKey)
      }
      

      【讨论】:

        猜你喜欢
        • 2020-01-08
        • 2017-10-10
        • 1970-01-01
        • 1970-01-01
        • 2015-10-22
        • 2015-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多