Почему в имплементации не указано, что методы deprecated (хотя в документации это так)?
Для того, чтоб использовать EncryptedSharedPreferences я добавил вот такую зависимость
implementation "androidx.security:security-crypto:1.0.0"
И пользуюсь вот так
...
val sharedPref = EncryptedSharedPreferences.create(
PREF_NAME,
MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC),
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
...
потом я наткнулся на офф док - https://developer.android.com/reference/androidx/security/crypto/MasterKeys где говориться, что этот класс deprecated и здесь есть несколько предложений о том как это можно сделать правильно - https://stackoverflow.com/a/62504831/5098477
НО, почему когда я в коде открываю имплементацию класса или метода негде нет упоминания о том, что это deprecated?
/**
* Convenient methods to create and obtain master keys in Android Keystore.
*
* <p>The master keys are used to encrypt data encryption keys for encrypting files and preferences.
*/
public final class MasterKeys {
private MasterKeys() {
}
или тут
/**
* Creates or gets the master key provided
*
* The encryption scheme is required fields to ensure that the type of
* encryption used is clear to developers.
*
* @param keyGenParameterSpec The key encryption scheme
* @return The key alias for the master key
*/
@NonNull
public static String getOrCreate(
@NonNull KeyGenParameterSpec keyGenParameterSpec)
throws GeneralSecurityException, IOException {
validate(keyGenParameterSpec);
if (!MasterKeys.keyExists(keyGenParameterSpec.getKeystoreAlias())) {
generateKey(keyGenParameterSpec);
}
return keyGenParameterSpec.getKeystoreAlias();
}
Не пойму почему не показано, что эти методы deprecated?
Ответы (1 шт):
Вы подключаете версию библиотеки 1.0.0, на тот момент класс MasterKeys не был помечен как Deprecated и не существовало класса MasterKey.Builder (который предлагается использовать вместо MasterKeys).
В Release Notes можно увидеть, что класс MasterKeys был помечен как Deprecated с версии 1.1.0-alpha01.
Вы можете попробовать использовать нестабильную версию 1.1.0-alpha01, либо дождаться выхода 1.1.0, чтобы иметь возможность использовать новый класс MasterKey.Builder вместо MasterKeys.