CTS: testSensorFeatures FAIL 的解决

错误如下

-- testSensorFeatures
fail
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature(android.hardware.sensor.gyroscope) returns false but SensorManager#getSensorList(4) shows sensors [MPL Gyroscope, MPL Raw Gyroscope, Corrected Gyroscope Sensor] expected:<false> but was:<true>at android.app.cts.SystemFeaturesTest.assertFeatureForSensor(SystemFeaturesTest.java:300)  

分析:硬件和软件上实际已经支持该sensor(gyroscope)。只是CTS报错而已。看来应该什么地方出现匹配问题了。

谷了一下歌,就明白了。

/system/etc/permissions/目录中需要包含这些硬件对应的xml文件。cts测试时会基于这些文件检查sensor list是否和这个匹配。

上述错误就是因为在/system/etc/permissions/目录中没有检查到gyroscope的对应文件,而在sensor list中却发现有这个sensor存在。所以报错!


解决,既然的确有这个sensor存在,那就在/system/etc/permissions/中加入这个sensor对应的xml文件即可。

这些文件都在 frameworks/native/data/etc/中。只要在base.mk文件中加入这样的拷贝动作即可。

diff --git a/aaxxxxbb/base.mk b/aaxxxxbb/base.mk
index 77cc195..0157f0e 100755
--- a/aaxxxxbb/base.mk
+++ b/aaxxxxbb/base.mk
@@ -117,6 +117,7 @@ PRODUCT_COPY_FILES := \
         frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \
         frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \
         frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \
+        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
     frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \
     frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \
        frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \




你可能感兴趣的:(CTS: testSensorFeatures FAIL 的解决)