未解决的参考:MasterKey

Unresolved reference: MasterKey

我正在尝试按照此处给出的示例进行操作: https://developer.android.com/topic/security/data

我已经在 gradle 中包含了所需的库:

implementation "androidx.security:security-crypto:1.0.0"

// For Identity Credential APIs
implementation "androidx.security:security-identity-credential:1.0.0-alpha02"

然而当我尝试使用代码时:

val mainKey = MasterKey.Builder(applicationContext)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

我收到未解决的参考:MasterKey 错误。图书馆有 class 吗?

提前致谢。

将库升级到最新版本(撰写本文时为 1.1.0-alpha03)

implementation "androidx.security:security-crypto:1.1.0-alpha03"

release noteMasterKey 添加到版本 1.1.0-alpha01。

Version 1.1.0-alpha01
...
New MasterKey class provides more options for keys, also deprecating MasterKeys to support new features and versions of Android that do not have KeyGenParamSpec.

趁着解恒回复中的一个hook…

MasterKey API was added in the androidx.security package from the 1.1.0-alpha01 version of security-crypto (you can access the versions of this library here).

如果你申请,你就会成功。

但是如果您正在处理的 Android 项目支持 Android API 23(又名 Android Marshmallow 或只是 Android 6)...

应该毫无问题地接受的东西,完全按照 official documentation 中的说明。显示如何使用 EncryptedSharedPreferencesEncryptedFile APIs…

的文档

如果您将 minSdkVersion 设置为 23,那么您会注意到该项目甚至无法编译。

我就是这样!

我从事的项目支持 Android API 23 级。

所以我applied the following updateAndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="...">

    <uses-sdk tools:overrideLibrary="androidx.security.identity.credential" />
...

并且项目运行顺利,包括上Android API 23(上AVD API 23)。

注意: 另一种选择是使用 MasterKeys API 而不是 MasterKey。但请注意 MasterKeys 已弃用。