Android8.0中对指纹的新要求

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的设置以及设备服务操作等等。

本文分享自微信公众号 - 安智客(china_safer)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏顶级程序员

10位顶级PHP大师的开发原则

来源:Andrew 译 ,译者网站已经停止运营 网址:http://net.tutsplus.com/tutorials/php/10-principles-...

40050
来自专栏IT技术精选文摘

全渠道客服中心聊天机器人实战

本文要点 客服中心的渠道多种多样,而且数量一直在增长。 企业需要支持所有这些渠道,可以自己开发服务,也可以向CPaaS供应商购买服务,或者集成已有的服务。 自研...

45670
来自专栏FreeBuf

物联网安全研究之二:IoT系统攻击面定义分析

在前文中,我们了解了IoT技术的基本架构,本文我将来说说IoT安全,在此过程中,我们会尝试定义一种新方法来理解IoT安全,同时也会创建一个结构化流程来方便认知I...

45090
来自专栏编程心路

为什么人人都需要学习Git?

先来说说 Git 的由来,Git 是一个版本控制软件,最初是由 Linux 之父——林纳斯·托瓦兹 为了更好的管理 Linux 内核代码而编写的。当时 林纳斯 ...

16610
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结

前言: 起初写这个框架的时候,可以说在当时来说并不是很流行的设计模式,那是在2012年,面向对象的编程大家都很熟悉, 但是“注入、控制反转(DI,IOC,依赖注...

45190
来自专栏开源项目

【码云周刊第 10 期】放码过来,四个男人的带头冲锋!!

一周热门资讯回顾 码云全面改版:新界面新态度,更一致的体验 DuangDuangDuang!码云项目的 Readme.md 特殊技能 微软技术透明中心...

42270
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合优化篇(八)代码优化整理小记及个人吐槽

前言 这两天也一直在纠结这一篇文章该写什么东西,前面临时加的两篇文章就有些打乱了整体节奏,这一篇又想去写一下代码层面优化的事情,可是也不太能抓住重要的点,不太确...

26660
来自专栏CSDN技术头条

OpenStack高可用核心架构分析

【编者按】本文从OpenStack架构入手,剖析了IaaS的云平台最核心的主要是这三部分:计算、网络、存储,作者指出OpenStack这样一个复杂系统,高可用更...

34060
来自专栏SDNLAB

VMware将其SDN软件扩展到非VMware环境中工作

VMware本周发布了其虚拟网络软件的两个新版本,一个是为vSphere 6.3版本服务且与其他VMware产品深度集成的NSX软件(VMware NSX fo...

30640
来自专栏安智客

Android8.0中CTS测试对TEE的要求(Google 9月1日文档)

我们知道TEE在Google Android7.0后成为一种强制性要求,那么Android8.0又是如何要求的呢? 我们来看在9.1日Google最新的文档。 ...

37660

扫码关注云+社区

领取腾讯云代金券