【谷歌G认证-XTS问题整理】[GSI] CtsHardwareTestCases – test_hasFingerprintHardware 指纹相关fail

💡 原文中文,约10300字,阅读约需25分钟。
📝

内容提要

谷歌G认证-XTS问题整理。问题是指纹解锁相关的case,在FingerprintManagerTest.java文件的第86行断言失败,导致测试失败。原因是isHardwareDetected()返回了false,可能是硬件不存在或未正常工作。需要关注FingerprintService::registerAuthenticators方法传递的参数为什么为null。刷了GSI后,config_biometric_sensors的值丢失,导致问题。

🔎

延伸解读

GSI刷机后指纹配置丢失的典型表现

刷入GSI后,系统镜像中的config_biometric_sensors配置可能丢失,导致指纹服务无法获取传感器属性。本文中,该配置原本位于frameworks/base/core/res/res/values/config.xml,刷GSI后未生效,使得FingerprintService的mSensorProps为空,最终isHardwareDetected()返回false,CTS测试失败。这提示在GSI测试中,需关注系统配置的持久性。

从测试失败到配置缺失的排查思路

文章展示了从CTS失败日志逐层追踪到配置缺失的过程:先确认isHardwareDetected()返回false,再检查FingerprintService的getSingleProvider和getSensorProperties,发现mSensorProps为空,进一步追踪到registerAuthenticators的参数hidlSensors为null,最终定位到config_biometric_sensors未读取。这种自顶向下的分析方法值得借鉴。

vendor配置作为解决方案的考量

文章指出,解决该问题需在vendor下配置config_biometric_sensors,以确保刷GSI后配置仍存在。这是因为GSI可能覆盖system分区配置,而vendor分区配置通常不受影响。但需注意,配置值必须与硬件匹配,如示例中的0:2:15代表传感器ID、类型和强度,错误配置可能导致其他问题。

❓

Q&A

谷歌G认证-XTS问题的主要原因是什么?

主要原因是FingerprintManagerTest.java文件第86行的断言失败,isHardwareDetected()返回false,可能是硬件不存在或未正常工作。

为什么isHardwareDetected()会返回false?

isHardwareDetected()返回false可能是因为mService为null或isHardwareDetectedDeprecated方法返回false,导致硬件检测失败。

刷GSI后config_biometric_sensors的值丢失会有什么影响?

config_biometric_sensors的值丢失会导致指纹硬件检测失败,从而影响指纹解锁功能的正常使用。

如何解决FingerprintService::registerAuthenticators方法参数为null的问题?

需要在vendor下配置config_biometric_sensors的值,以确保刷完GSI后该值不丢失。

测试用例显示设备应支持指纹解锁,但实际情况如何?

尽管测试用例显示设备应支持指纹解锁,但由于isHardwareDetected()返回false,实际情况是指纹解锁功能无法正常工作。

FingerprintService中的mSensorProps为何会为空?

mSensorProps为空是因为在刷GSI后,FingerprintService::registerAuthenticators方法未能正确初始化该值。

🏷️

标签

➡️

继续阅读