android 未解析的引用:主密钥

3duebb1j  于 2023-01-07  发布在  Android
关注(0)|答案(3)|浏览(173)

我试着遵循这里给出的例子: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错误。库中有该类吗?
先谢了。

4c8rllxm

4c8rllxm1#

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

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

版本1.1.0-alpha 01中添加了release noteMasterKey

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.
deikduxw

deikduxw2#

利用杰恒的一个勾手...
MasterKey API是从security-crypto1.1.0-alpha01版本添加到androidx.security包中的(您可以访问此库here的版本)。
如果您应用solution informed by Jie Heng,您将获得成功。
但如果您正在开发的Android项目支持Android API 23(又名Android棉花糖或Android 6)...
应该毫无问题地接受的东西,完全如official documentation中所述。显示如何使用EncryptedSharedPreferencesEncryptedFile API的文档...
如果您将minSdkVersion设置为23,那么您将注意到该项目甚至不会编译。
那是我的案子!
我工作的项目支持从Android API级别23.
所以我把它转换成了:

<?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已过时。

ux6nzvsh

ux6nzvsh3#

只要使用val mainKey = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)就可以了。MasterKey只在alpha上,所以将MasterKey标记为弃用似乎为时过早。

相关问题