android - 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)
解决方案
推荐阅读
- typescript - 在打字稿中添加到传单命名空间
- arrays - 在 C 中增加一个没有值的声明数组时得到奇怪的输出
- javascript - 我可以使用 peerjs 服务器。我想托管我自己的 peerjs 服务器,但它不工作
- java - JavaFX 似乎正在丢失我的事件处理程序吗?
- unity3d - 如何停止 Unity 权限对话框
- typescript - 如何在 Typescript 中清除具有库类型的变量?
- c - 为什么我需要在 C 中初始化 pthread 互斥锁?
- javascript - 如何在 chrome 扩展的 manifest v3 中使用 background.html
- ruby - Ruby 变量未在循环中读取
- macos - 视觉工作室代码智能感知不工作(mac)