我們先來看一張指紋在Android6.0版本上的架構層次圖:
指紋應用層,也就是手機上的指紋設置,這是Android系統層定義的指紋管理入口。
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
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中封裝了操作指紋函數接口。
那指紋驅動現在還有啥作用?
\kernel-3.18\drivers\misc\mediatek\fingerprint\
主要是GPIO的設置以及設備服務操作等等。
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測試將是各廠商需要重點關注的。
1024你懂的国产日韩欧美_亚洲欧美色一区二区三区_久久五月丁香合缴情网_99爱之精品网站
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。