受保护的Android SharedPreferences错误:'引起者:java.lang.RuntimeException:字段keySize_为...'

问题描述 投票:0回答:1

在一个Android Kotlin项目中,我使用androidx.security库基于此link实现了EncryptedSharedPreference功能,它在调试模式下运行良好。但是在发布模式下,我不断收到此错误

  java.lang.ExceptionInInitializerError
    at com.package_name.i.a.f(:46)
    at com.package_name.i.a.j(:52)
    at com.package_name.i.a.e(:82)
    at com.package_name.MyApplication.onCreate(:37)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
    at android.app.ActivityThread.-wrap1(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.lang.RuntimeException: Field keySize_ for k.a.d.a.h0.u not found. Known fields are [private int k.a.d.a.h0.u.i, private static final k.a.d.a.h0.u k.a.d.a.h0.u.j, private static volatile k.a.d.a.i0.a.a1 k.a.d.a.h0.u.k]
    at k.a.d.a.i0.a.v0.n0(:608)

请与您分享有关如何解决此错误的想法。

security sharedpreferences encrypted-shared-preference
1个回答
0
投票

看来您的依赖项中缺少某些内容。与标准jre类似的东西在这里找到:https://deveshsharmablogs.wordpress.com/2012/10/09/fixing-java-security-invalidkeyexception-illegal-key-size-exception/

由于默认情况下施加的限制而引发此异常JDK。在默认的JDK安装中,AES被限制为128位密钥尺寸。为了执行256位AES加密,您需要下载并安装Java Cryptography Extension(JCE)Unlimited强度管辖权策略文件。

您至少应该在gradle文件中包含此内容

implementation "androidx.security:security-crypto:1.0.0-alpha02

并检查您的jdk。

© www.soinside.com 2019 - 2024. All rights reserved.