开发环境与项目配置:minSdkVersion 要求、Gradle 依赖、AndroidX Security-Crypto 库引入

本课程所有实战代码基于 Android API 23(Android 6.0)及以上版本构建。Android Keystore 在 API 23 新增了基于硬件支持的 KeyGenParameterSpec,支持 AES/GCM 和 EC 算法;API 28 进一步引入 StrongBox Keymaster 支持。为保证加解密流程兼容且能利用硬件安全模块,minSdkVersion 必须 ≥ 23。

2.1 minSdkVersion 要求速查

功能特性最低 API 级别备注
AES/GCM 密钥生成23KeyGenParameterSpec.Builder
EC 密钥与签名23EC 曲线 P-256 / P-384
KeyInfo 获取23判断是否 TEE 或硬件支持
StrongBox Keymaster28独立安全芯片
encrypt / decrypt 操作23Cipher 配合 Keystore

若项目需兼容 API 22 以下设备,请考虑使用 AndroidX Security-Crypto 提供的 EncryptedSharedPreferences 或 MasterKey 降级方案,但本课程所有示例统一以 API 23 为最低目标。

2.2 Gradle 依赖:引入 AndroidX Security-Crypto

在模块级 build.gradle 或 build.gradle.kts 中添加 security-crypto 以及关联依赖。推荐使用 1.1.0-alpha06 或更高稳定版(1.1.0-alpha06 已修复多个已知 bug,并支持 Android 12 以上新密钥策略)。

Gradle (Groovy) 配置:
android {
    compileSdk 34
    defaultConfig {
        minSdk 23
        targetSdk 34
    }
    ...
}

dependencies {
    implementation 'androidx.security:security-crypto:1.1.0-alpha06'
    // 如需对文件或流加密可额外引入
    implementation 'androidx.security:security-crypto-ktx:1.1.0-alpha06'
}
Gradle Kotlin DSL 配置:
android {
    compileSdk = 34
    defaultConfig {
        minSdk = 23
        targetSdk = 34
    }
    ...
}

dependencies {
    implementation("androidx.security:security-crypto:1.1.0-alpha06")
    implementation("androidx.security:security-crypto-ktx:1.1.0-alpha06")
}

说明:

  • security-crypto 库依赖 Android Keystore 系统服务,无需额外注册。
  • security-crypto-ktx 提供 Kotlin 扩展函数(如 encryptedSharedPreferences)提升开发效率。
  • 若项目已使用 androidx.biometric 库,无需重复添加;Security-Crypto 本身不强制要求生物识别依赖。

2.3 依赖引入后的同步与验证

执行 Gradle 同步后,检查 External Libraries 中是否出现 androidx.security:security-crypto。可在代码中添加简单验证:

import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyStore

// 确认 KeyStore 可用
val keyStore = KeyStore.getInstance("AndroidKeyStore")
keyStore.load(null)
Log.d("KeystoreCheck", "KeyStore type: ${keyStore.type}, provider: ${keyStore.provider}")

若控制台输出 AndroidKeyStore 且未抛出异常,说明环境配置成功。

2.4 常见配置错误与修正

⚠ 错误 1:minSdk 低于 23
编译时提示 Call requires API level 23。此时必须修改 build.gradle 中 minSdk 为 23 或更高;若业务必须兼容低版本,应使用 Build.VERSION.SDK_INT 条件分支,并引入兼容包。
⚠ 错误 2:依赖版本冲突
若项目同时引入旧版 androidx.core:core:1.6.0 等库,可能造成 Security-Crypto 1.1.0-alpha06 无法解析元数据。解决方案:统一使用最新版 AndroidX 库(如 core 1.12.0),或在 repositories 中显式指定 google() 仓库。
💡 建议:在项目根目录 gradle.properties 中开启 android.useAndroidX=true,确保所有支持库切换至 AndroidX 命名空间。

2.5 配置流程总图

下图梳理了从项目创建到可调用 Keystore 的完整配置路径:

开发环境配置流程图 minSdkVersion ≥ API 23 添加 Gradle 依赖 security-crypto:1.1.0 Gradle Sync 验证 KeyStore 类型 运行时兼容性检查 Build.VERSION.SDK_INT 条件分支 ✅ 配置完成 可调用 Keystore API 可选辅助库 security-crypto-ktx biometric 注意 如果使用 Kotlin,建议同时引入 security-crypto-ktx 以利用扩展函数简化加密操作。 若 API < 23 则走降级

2.6 完整配置清单

步骤操作验证方式
1设置 minSdk 23,targetSdk 34在 build.gradle 中检查 defaultConfig
2添加 security-crypto 依赖Gradle Sync 后 External Libraries 出现
3添加 security-crypto-ktx(可选)同上
4编写测试代码获取 KeyStore 实例日志输出 AndroidKeyStore
5在模拟器或真机运行(API 23+)无异常提示