Почему закрытый ключ не читается после обновления до Android 4.2?

После обновления плагина Android Studio gradle до версии 4.2.1 ('com.android.tools.build:gradle:4.2.1') ​​и Kotlin до версии 1.5 закрытый ключ, созданный предыдущей версией приложения, больше не читается.

Есть ли какое-нибудь объяснение, почему это происходит, и что здесь можно сделать? В официальных документах по Android я видел заметку, относящуюся к Android 4.2, но это не то, что я испытываю. Похоже, JDK 11 заставляет хранилище ключей думать, что это новое приложение, что является еще одной неприятной ошибкой, одной из многих, представленных в последних выпусках Android.

Ошибка при использовании разных паролей для ключа и хранилища ключей. Начиная с версии 4.2, Android Studio теперь работает на JDK 11. Это обновление вызывает базовое изменение поведения, связанное с подписью ключей.

Когда вы перейдете в меню «Сборка»> «Создать подписанный пакет / APK» и попытаетесь настроить подписывание приложений для набора приложений или APK-файла, ввод разных паролей для ключа и хранилища ключей может привести к следующей ошибке:

Ключ был создан с ошибками: Предупреждение: разные пароли хранилища и ключей не поддерживаются для хранилищ ключей PKCS12. Чтобы обойти эту проблему, введите один и тот же пароль для ключа и хранилища ключей.

Код для загрузки ключа ниже:

      private fun loadKey(alias: String) : SecretKey? {
    var key: SecretKey? = null

    try {
        val ks: KeyStore = KeyStore.getInstance(androidKeyStore)
        ks.load(null)
        key = (ks.getEntry(alias, null) as KeyStore.SecretKeyEntry).secretKey
    }
    catch (e:Exception) {
        App.d(TAG, "loadKey Ex: ${e.message}")
    }
    return key
}

0 ответов

Другие вопросы по тегам