前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android8.0中对指纹的新要求

Android8.0中对指纹的新要求

作者头像
安智客
发布2018-02-24 15:14:13
1.5K0
发布2018-02-24 15:14:13
举报
文章被收录于专栏:安智客安智客

Android O版本对指纹有啥特别要求?

我们前面也介绍过《Android O新特性之Treble介绍》,在Android O以及以后的版本当中,Android 更新了框架,引入了一套叫HIDL的语言来定义Freamework与HAL之间的接口。

Android O版本没有了fingerprintd。fingerprintService.java 调用HIDL接口,HIDl接口的实现类可以由指纹厂家自行去实现。

BiometricsFingerprint.cpp 文件是IBiometricsFingerprint接口的实现类。

android.hardware.biometrics.fingerprint@2.1-service.rc启动fps_hal服务。

BiometricsFingerprint.cpp 文件,会在构造函数中去打开HAL。其他没变。

附录:

本文以指纹分析作为一个例子,主要是阐述Android8.0新版本架构给vendor厂商带来的改变。也就是说以后的VTS测试将是各厂商需要重点关注的。

我们先来看一张指纹在Android6.0版本上的架构层次图:

我们依次简略分析,指纹应用层、指纹服务层、fingerprintd、指纹CA、指纹TA、驱动层等方面,指纹应用层,也就是手机上的指纹设置,这是Android系统层定义的指纹管理入口。

指纹运行在TEE中从Android7.0开始后就成为一种强制要求,如果说Android7.0版本通过一些规避手段不使用TEE还可能的话,那么在Android8.0及其后续版本中,通过Google的VTS测试要求使得TEE则无法规避!

1,system/core/rootdir/init.rc 中启动system/core/Fingerprintd指纹的守护进程

fingerprintd的代码实现如下目录:

Fingerprintd把IFingerprintDaemon远程服务,注册到serivcemanager。

2,SystemServer 会启动指纹的系统服务FingerprintService

framework层中的FingerprintService调fingerprintd服务,调用FingerprintDaemonProxy.cpp 里面的方法。

/frameworks/base/services/java/com/android/server/SystemServer.java中

mSystemServiceManager.startService(FingerprintService.class);

Android系统在加载SystemServer,启动FingerprintService 指纹系统服务。

/frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.java

public void onStart() {

publishBinderService(Context.FINGERPRINT_SERVICE,new FingerprintServiceWrapper());

IFingerprintDaemon daemon = getFingerprintDaemon();

if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId);

listenForUserSwitches();

}

3,FingerprintSetvice调用fingerprintd 的接口,与fingerprint Hal 层通信

/frameworks/base/core/java/android/hardware/fingerprint/

fingerprintd的代码FingerprintDaemonProxy.cpp会打开HAL层。

4,fingerprint Hal 通过指纹厂商的驱动程序访问指纹硬件。

在这一层,如果不在TEE中实现,则是指纹HAL层库,直接访问指纹硬件驱动。

目前Google要求指纹必须在TEE中实现,因此此处的HAL层也可以称之为指纹CA。

一般情况下,指纹CA代码会在如下目录,

/hardware/libhardware/include/hardware/fingerprint.h

/hardware/libhardware/modules/fingerprint

不同厂商的TEE系统,指纹厂商必须进行适配。

5,指纹TA。

由于在TEE系统已经接管了指纹硬件SPI接口,因此指纹TA中封装了操作指纹函数接口。

6,指纹驱动。

那指纹驱动现在还有啥作用?

\kernel-3.18\drivers\misc\mediatek\fingerprint\

主要是GPIO的设置以及设备服务操作等等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安智客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档