Android - NullPointerException в android.security.IKeystoreService.del для устройств Huawei - PullRequest
0 голосов
/ 06 июля 2018

При загрузке нашего приложения в магазин Google Play предварительный отчет google указывает, что приложение вылетает с исключением из-за нулевого указателя.Проблема касается реализации KeyStore только на устройствах Huawei.

Stacktrace:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'int android.security.IKeystoreService.del(java.lang.String, int)' on a null object reference
       at android.security.KeyStore.delete(KeyStore.java:186)
       at android.security.Credentials.deletePrivateKeyTypeForAlias(Credentials.java:292)
       at android.security.Credentials.deleteAllTypesForAlias(Credentials.java:251)
       at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:464)
       at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:699)
       at com.example.utility.crypto.KeyStoreHelper.createKeys(Unknown Source)
       at com.example.utility.crypto.KeyStoreHelper.createKeys(Unknown Source)
       at com.example.activities.register.SplashActivity$1.run(Unknown Source)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:255)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:776)  

Я использую библиотеку Google Tink для реализации Keystore.Библиотека не имеет ничего общего с ошибкой.Ошибка по-прежнему происходит без библиотеки.

Ниже приведен код:

@Throws(Exception::class)
private fun getOrGenerateNewKeysetHandle(): KeysetHandle {
    return AndroidKeysetManager.Builder()
        .withSharedPref(this, "KEYSET", "PREF")
        .withKeyTemplate(AeadKeyTemplates.AES256_GCM)
        .withMasterKeyUri(REIWA_MASTER_KEY_URI)
        .build()
        .keysetHandle
}

Я думаю, что это связано с реализацией хранилища ключей устройства.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 06 сентября 2018

Отключить интеграцию Keystore с AndroidKeysetManager.doNotUseKeystore().

...