未解决的参考:MasterKey

Posted

技术标签:

【中文标题】未解决的参考:MasterKey【英文标题】:Unresolved reference: MasterKey 【发布时间】:2021-07-25 09:16:50 【问题描述】:

我正在尝试遵循此处给出的示例: 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()

我得到 错误。图书馆有那个类吗?

提前致谢。

【问题讨论】:

【参考方案1】:

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

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

从release note 开始,MasterKey 被添加到版本 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.

【讨论】:

【参考方案2】:

趁着杰恒的反应……

MasterKey API 是从1.1.0-alpha01 版本的security-crypto 中添加到androidx.security 包中的(您可以访问此库的版本here)。

如果你申请solution informed by Jie Heng,你就会成功。

但如果您正在开发的 Android 项目支持 Android API 23(又名 Android Marshmallow 或仅支持 Android 6)……

应该毫无问题地接受的东西,正如official documentation 中所述。说明如何使用 EncryptedSharedPreferencesEncryptedFile API 的文档...

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

这就是我的情况!

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

所以我applied the following update 到AndroidManifest.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 已弃用。

【讨论】:

以上是关于未解决的参考:MasterKey的主要内容,如果未能解决你的问题,请参考以下文章

未解决的参考:mockwebserver

未解决的参考:等待。 Kotlin 协程

未解决的参考 DaggerApplicationComponent

未解决的参考:FlutterActivity

未解决的参考:测试

未解决的参考:TypeToken