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测试成功。