【发布时间】:2020-06-29 07:24:40
【问题描述】:
这是一个非常简单的示例代码:
val keyStore = KeyStore.getInstance("AndroidKeyStore")
keyStore.load(null)
if (keyStore.getCertificate("foobar") == null) {
Log.d("kkkkk", "keystore not found")
}
每次我调用 getCertificate() 方法时,KeyStore 都会将堆栈跟踪作为警告放入日志中。尽管代码按预期工作,但仍然非常令人沮丧,因为我们非常广泛地使用此功能并且我们的日志变得非常难以阅读。我几乎在所有至少运行 Android 9 的手机上都遇到过这种情况。这是堆栈跟踪的开头:
2020-03-27 14:34:49.541 26536-26536/com.example.keystoreexceptiontest W/KeyStore: KeyStore exception
android.os.ServiceSpecificException: (code 7)
at android.os.Parcel.createException(Parcel.java:2085)
at android.os.Parcel.readException(Parcel.java:2039)
at android.os.Parcel.readException(Parcel.java:1987)
at android.security.keystore.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:978)
at android.security.KeyStore.get(KeyStore.java:236)
at android.security.KeyStore.get(KeyStore.java:225)
at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificate(AndroidKeyStoreSpi.java:160)
at java.security.KeyStore.getCertificate(KeyStore.java:1120)
经过一番搜索,我发现了许多类似的问题,但大多数人都推荐这个解决方案来解决问题,比如this one
你能推荐一些东西来消除这些警告吗?
【问题讨论】: