首页 > 解决方案 > Android Keystore 崩溃,大多数在三星设备、Android 8 和 8.1 上,在 Android 应用程序启动时

问题描述

得到NullPointerException. 在 Android 应用程序启动时。

在应用程序中,一些与用户相关的敏感信息在存储-检索之前分别使用 KeyStore.PrivateKeyEntry 进行加密或解密。

最初(在应用程序启动时),在尝试设置事物(如本例中的 Keystore 实用程序)时,应用程序尝试使用私钥、证书和一些属性获取 KeyStore.PrivateKeyEntry,不知何故适用于Android 8.0,大多数适用于三星设备(根据谷歌播放错误统计)证书作为空值传递,这就是它显式抛出 NPE 的原因。

Caused by: java.lang.NullPointerException: 
at java.security.KeyStore$PrivateKeyEntry.<init> (KeyStore.java:559)
  at java.security.KeyStore$PrivateKeyEntry.<init> (KeyStore.java:526)
  at java.security.KeyStoreSpi.engineGetEntry (KeyStoreSpi.java:519)
  at java.security.KeyStore.getEntry (KeyStore.java:1621)
  at com.compant.xyz.data.KeyStoreUtils.getPrivateKey (KeyStoreUtils.java:68)
  at com.compant.xyz.data.KeyStoreUtils.<init> (KeyStoreUtils.java:53)
  at com.compant.xyz.data.KeyStoreManager.<init> (KeyStoreManager.java:29)
  at com.compant.xyz.injection.module.DependencyModule.provideKeystore (DependencyModule.java:52)
  at com.compant.xyz.injection.module.DependencyModule_ProvideKeystoreFactory.get (DependencyModule_ProvideKeystoreFactory.java:19)
  at com.compant.xyz.injection.module.DependencyModule_ProvideKeystoreFactory.get (DependencyModule_ProvideKeystoreFactory.java:8)
  at dagger.internal.DoubleCheck.get (DoubleCheck.java:47)
  at com.compant.xyz.COMPANYApplication_MembersInjector.injectMembers (COMPANYApplication_MembersInjector.java:34)
  at com.compant.xyz.COMPANYApplication_MembersInjector.injectMembers (COMPANYApplication_MembersInjector.java:9)
  at com.compant.xyz.injection.component.DaggerDependencyComponent.inject (DaggerDependencyComponent.java:861)
  at com.compant.xyz.COMPANYApplication.initDependency (COMPANYApplication.java:75)
  at com.compant.xyz.COMPANYApplication.onCreate (COMPANYApplication.java:35)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1125)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6062)
  at android.app.ActivityThread.-wrap1 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1764)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6944)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

标签: androidsamsung-mobileandroid-8.0-oreoandroid-keystore

解决方案


推荐阅读