security-crypto:针对 S+(版本 31 及以上)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

security-crypto: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent

针对 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于可变的 PendingIntent 时才使用 FLAG_MUTABLE,例如如果它需要与内联回复或气泡一起使用。

堆栈跟踪:

com.google.crypto.tink.shaded.protobuf.FieldType$Collection。 (FieldType.java:337) androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme。 (EncryptedSharedPreferences.java:148) PreferenceHelper$Companion.init (PreferenceHelper.kt:41)

这是我初始化 SharedPreferences 的方式:

private lateinit var preferences: SharedPreferences

fun init(context: Context) {
     val mainKey = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);
     preferences = EncryptedSharedPreferences.create(
                SHARED_PREF_KEY,
                mainKey,
                context,
                EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,   <- this is the 41 line number, where its crashing
                EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
         )

 }

有什么帮助吗?

尝试将以下行添加到您的 :app(模块级)build.gradle 依赖项中:

implementation 'androidx.work:work-runtime-ktx:2.7.1'

添加这个依赖项为我解决了这个问题。

implementation 'androidx.work:work-runtime-ktx:2.7.1'