CTS测试报告中显示
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature(android.hardware.sensor.stepcounter) returns true but SensorManager#getSensorList(19) shows sensors [] expected:<true> but was:<false>
初步怀疑是实际没有stepcounter(还未上计步代码),但是测试有stepcounter项,进行如下排查:
adb shell dumpsys sensorservice
未找到计步,说明实际确实是没有计步器的(此时该project还未进行计步器的bring up)
进行以下尝试:
1. 删除机器中文件android.hardware.sensor.stepcounter.xml(根据project的相应目录进行删除)
rm –rf /vendor/etc/permissions/android.hardware.sensor.stepcounter.xml
CTS测试stepcounter项成功,但是stepdetector报错:
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature(android.hardware.sensor.stepdetector) returns true but SensorManager#getSensorList(18) shows sensors [] expected:<true> but was:<false>
2. 删除机器中文件android.hardware.sensor.stepcounter.xml & android.hardware.sensor.stepdetector.xml
rm –rf /vendor/etc/permissions/android.hardware.sensor.stepcounter.xml
rm –rf /vendor/etc/permissions/android.hardware.sensor.stepdetector.xml
CTS测试pass。
可以确定是实际没有stepcounter,但是测试有stepcounter项。然而该基线上有两款产品,一款是已经合入了计步相关的代码,我们称为projectdone,一款是还未合入的,我们称为projectno。这时候需要修改编译文件,去掉projectno的android.hardware.sensor.step*.xml。
3. 平台编译添加条件编译
/device/qcom/msm8937_32go/msm8937_32go.mk
在projectno中去掉android.hardware.sensor.step*.xml
# Feature definition files for msm8937
ifeq ($(TARGET_PRODUCT), projectdone)
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml
else
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml
endif
CTS测试stepcounter失败。
即对msm8937_32.mk 进行条件编译,失败。
4. 在product的编译中去掉android.hardware.sensor.step*.xml
在projectno的编译中去掉android.hardware.sensor.step*.xml
device/vendorname/productname/ projectnoname/projectnoname.mk
# Feature definition files for msm8937
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml
#frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
#frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml
CTS测试成功。

这篇博客详细记录了在CTS测试过程中遇到的关于stepcounter和stepdetector传感器的问题。首先,通过`adb shell dumpsys sensorservice`确认设备实际上没有这两个传感器。然后,通过删除相应的XML配置文件使CTS测试通过。接着,尝试通过平台编译的条件编译在`msm8937_32go.mk`中移除相关配置,但测试仍然失败。最后,在projectno的特定编译文件中移除配置后,CTS测试成功。整个过程展示了Android系统中硬件传感器配置与测试的调试方法。
3608

被折叠的 条评论
为什么被折叠?



