微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Keystore.load() 在 Android 10 上崩溃

如何解决Keystore.load() 在 Android 10 上崩溃

当我尝试从资产文件夹加载 p12 证书时,我的应用在 Android 10 上不断崩溃。

我的文件没问题。

代码始终适用于以前的 Android 版本。

AssetManager assetManager = ctx.getAssets();
AssetFileDescriptor fileDescriptor = assetManager.openFd(certificatePath);
FileInputStream fisCertificate = fileDescriptor.createInputStream();

KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(fisCertificate,"".tochararray()); // no passwords here

...

fisCertificate.close();

我收到以下错误

2021-01-22 14:51:02.447 26333-26333/bzh.toto.myapp E/AndroidRuntime:致命异常:main 进程:bzh.toto.myapp,PID:26333 java.lang.RuntimeException: 无法启动活动 ComponentInfo{bzh.toto.myapp/bzh.toto.myapp.SplashScreenActivity}: java.lang.RuntimeException: java.security.cert.CertificateException: com.android.org.conscrypt.OpenSSLX509CertificateFactory $ParsingException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: java.lang.NullPointerException: gen->length 数据 == 空 在 android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3388) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3527) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7710) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 引起:java.lang.RuntimeException:java.security.cert.CertificateException:com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException:com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException:java.lang.NullPointerException:gen->长度 数据 == 空 在 com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(PKCS12KeyStoreSpi.java:1153) 在 java.security.KeyStore.load(KeyStore.java:1484) 在 bzh.toto.myapp.services.CertificateService.copyAssetCertificatetoSDCard(CertificateService.java:133) 在 bzh.toto.myapp.services.CertificateService.checkCertificatePresence(CertificateService.java:53) 在 bzh.toto.myapp.utils.RealwearactivityUtils.checkCertificate(RealwearactivityUtils.java:72) 在 bzh.toto.myapp.SplashScreenActivity.onCreate(SplashScreenActivity.java:48) 在 android.app.Activity.performCreate(Activity.java:7820) 在 android.app.Activity.performCreate(Activity.java:7809) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1318) 在 android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3363) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3527) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2123) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7710) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

你有什么想法吗? :) 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。