Почему закрытый ключ не читается после обновления до 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
}