3、开发环境准备:Android Studio配置、项目创建、Gradle依赖添加、权限声明

好,咱们正式开始动手了。这一节我会带你一步步把开发环境搭起来。说实话,虹膜识别这块的配置比普通功能要稍微讲究一点,因为涉及到硬件接口和系统权限。我在早期做虹膜项目时,光环境配置就折腾了大半天——嗯,后来发现是漏了一个依赖。

咱们按这个顺序来:先配好Android Studio,再创建项目,然后加Gradle依赖,最后声明权限。每一步我都会把坑指出来。

3.1 Android Studio版本与SDK要求

先说说版本的事。Android Studio建议用最新稳定版,目前是Hedgehog或更高。为什么?因为虹膜识别API在较新的SDK里才完整支持。

组件 最低版本 推荐版本
Android Studio 4.2 Hedgehog (2023.3.1+)
compileSdk 29 34
minSdk 26 28
targetSdk 29 34
我的习惯:compileSdk直接用最新版,minSdk设到28。因为Android 9(API 28)开始,生物识别API才真正稳定。低于这个版本,很多设备压根不支持虹膜。

3.2 创建项目——选对模板很重要

打开Android Studio,点"New Project"。这里有个小细节:

  • Empty Views ActivityEmpty Compose Activity
  • 我个人偏好用Views Activity,因为虹膜识别UI通常需要自定义布局,Compose虽然好但调试起来稍麻烦
  • 包名建议用 com.yourcompany.irisapp 这种结构

项目创建好后,第一件事是检查 build.gradle.kts(或 build.gradle)里的SDK版本。我遇到过好几次,默认生成的版本太低,导致后面编译报错。

3.3 Gradle依赖添加——核心就这几个

虹膜识别主要依赖AndroidX的 biometric 库。打开 app/build.gradle.kts,在 dependencies 块里加上:

dependencies {
    // 生物识别核心库
    implementation("androidx.biometric:biometric:1.2.0-alpha05")

    // 如果你用Kotlin协程(我强烈建议)
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")

    // 可选:ViewModel支持
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
}
注意:biometric库的版本号,1.2.0-alpha05是目前支持虹膜识别最稳定的版本。我曾经试过1.1.0,结果发现它对虹膜的支持有bug——回调死活不触发。后来换成alpha05就好了。

同步一下Gradle。如果网络慢,记得配好国内镜像源。在 settings.gradle.kts 里加:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
    }
}

3.4 权限声明——这一步不能省

虹膜识别需要两个权限:一个是摄像头权限(因为虹膜本质上是通过摄像头采集),另一个是生物识别权限。打开 AndroidManifest.xml,在 <manifest> 标签内添加:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />

<!-- 如果你的应用只针对有虹膜硬件的设备,可以加这个 -->
<uses-feature android:name="android.hardware.iris" android:required="true" />

这里有个容易踩的坑:USE_BIOMETRIC 权限是普通权限,不需要运行时申请。但 CAMERA 是危险权限,必须在运行时动态申请。我早期做项目时忘了这事,结果在Android 10以上的设备上直接崩溃——因为权限被拒绝了。

运行时申请摄像头权限的代码片段:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
    != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(
        this,
        arrayOf(Manifest.permission.CAMERA),
        CAMERA_PERMISSION_CODE
    )
} else {
    // 权限已获取,可以初始化虹膜识别
    initIrisAuthentication()
}

3.5 验证环境——跑一个空壳测试

依赖加好了,权限也声明了。怎么确认环境没问题?写一个最简单的Activity,调用 BiometricPrompt 看看能不能弹出对话框。

class MainActivity : AppCompatActivity() {
    private lateinit var biometricPrompt: BiometricPrompt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val executor = ContextCompat.getMainExecutor(this)
        biometricPrompt = BiometricPrompt(this, executor,
            object : BiometricPrompt.AuthenticationCallback() {
                override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
                    // 认证成功
                    Log.d("IrisDemo", "认证成功!")
                }

                override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
                    // 认证出错
                    Log.e("IrisDemo", "错误: $errString")
                }

                override fun onAuthenticationFailed() {
                    // 认证失败
                    Log.w("IrisDemo", "认证失败")
                }
            })

        val promptInfo = BiometricPrompt.PromptInfo.Builder()
            .setTitle("虹膜验证")
            .setSubtitle("请看向摄像头")
            .setAllowedAuthenticators(
                BiometricManager.Authenticators.BIOMETRIC_IRIS
            )
            .build()

        findViewById<Button>(R.id.btn_auth).setOnClickListener {
            biometricPrompt.authenticate(promptInfo)
        }
    }
}
避坑指南:我曾经在模拟器上测试这段代码,结果一直报错。后来才发现——模拟器没有虹膜硬件!BiometricManager.Authenticators.BIOMETRIC_IRIS 只在真机上有效。所以,务必用真机调试。

3.6 知识体系总览

下面这张图把整个开发环境准备的核心逻辑串起来了。你可以对照着检查自己有没有遗漏:

开发环境准备 · 核心流程 Android Studio 版本 & SDK配置 项目创建 模板选择 & 包名 Gradle依赖 biometric库 权限声明 CAMERA + USE_BIOMETRIC 关键检查点 • compileSdk ≥ 34 • minSdk ≥ 28 • 真机调试 项目结构 • Empty Views Activity • 包名规范 • 语言:Kotlin 依赖版本 • biometric:1.2.0 • coroutines:1.7.3 • 国内镜像源 权限细节 • CAMERA:运行时申请 • USE_BIOMETRIC:静态 • uses-feature iris ✅ 环境就绪 → 可以开始写虹膜识别代码了

环境准备这块,说白了就是三板斧:配好SDK、加对依赖、声明权限。只要这三步走对了,后面写代码基本不会因为环境问题卡壳。我个人建议你每加一个依赖就同步一次Gradle,别攒一堆再同步——出错了不好定位。

好了,环境搭好了。下一节咱们就正式进入虹膜识别的核心代码编写。到时候我会把 BiometricPrompt 的每个回调都拆开讲,保证你一看就懂。


公众号:蓝海资料掘金营,微信deep3321