Почему в имплементации не указано, что методы 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 шт):

Автор решения: Vadik

Вы подключаете версию библиотеки 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.

→ Ссылка