【谷歌G认证-XTS问题整理】[GSI] CtsHardwareTestCases – test_hasFingerprintHardware 指纹相关fail
内容提要
谷歌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方法未能正确初始化该值。