androidCTS测试FAIL项解决集锦
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
androidCTS测试FAIL项解决集锦
/z_guijin/article/details/16113649
1、直接设置问题
estUnknownSour cesOffByDefaul t fa
il
junit.framework.AssertionFailedError: Deviceshould not ship with 'Unknown Sources' enabled by default.expected:<0> butwas:<1> atandroid.provider.cts.Settings_SecureTest.testUnkno wnSourcesOffByDefault(Settings_SecureTest.java:183)
这种fail最好解决,直接按照字面理解就OK,设置---安全---默认关闭:未知来源。
2、permission
-- testSenso rFeatures fa
il
junit.framework.AssertionFailedError:PackageManager#hasSys temFeature(android.hardware.sensor.accelerometer)returns true but SensorManager#getSensorList(1) shows sensors []expected:<true> butwas:<false> atandroid.app.cts.SystemFeaturesTest.assertFeatureForSenso r(SystemFeaturesTest.java:300)
一般情况修改 - > frameworks/base/data/etc/*.xml 文件,例如android.hardware.camera.xml,platform.xml等文件,这边的文件定义了设备具有的一些权限。
--------------------------------------------------------------------------------------------------------------------
android.app.cts.SystemFeaturesTest#testSensorFeatures FAIL
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature(android.hardware.sensor.li ght) returns true but SensorManager#getSensorList(5) shows sensors [] expected:<true> but was:<false>
原因:手机无光感
解决方法:去
除..\mediatek\config\{PROJECT}\android.hardware.sensor.light.x ml及
android.hardware.sensor.proximity.xml文件中相应选项
3、由测试而引起的非测试项出错
-- testRecordingHint fail j ng.RuntimeException: start failed.
atandroid.media.MediaRecorder.start(Native
Method)
这种情况要根据Logcat去查看RuntimeException的具体错误。
通常可以先不改,因为很难查错。
4、网络问题
--
test_isReacha ble fai
l
.UnknownHostException: Unable to resolvehost "": No address associated with hostname .InetAddress.lookupHostByName(InetAddress.
java:426)
这类问题是由于国内的网络无法访问国外网站导致的,最好的办法就在公司搭建一个VPN,链接出去。
5、系统文件权限
-- testAllFi lesInSysA reNotWrit able f
a
i
l
junit.framework.AssertionFailedError: Foundwritable:
[/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_pow er,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_e n_file,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ ts_Calibrate]
atandroid.permission.cts.FileSystemPermissionTest. testAllFilesInSysAreNotWritable(FileSystemPermissionTest.j ava:364)
-- testNoSet f
a
junit.framework.AssertionFailedError at
uidTcpdum p i
l
android.security.cts.BannedFilesTest. assertNotSetugid(BannedFilesTest.java:59)
这些问题是系统文件权限的问题,解决方法比较土,就是全局搜索该文件,查看那些对该文件操作的脚本,然后修改即可。
上面两个fail的解决方法是:
a. 修改kernel/drivers/input/touchscreen/malata_ts.c
__ATTR(ts_power, 0777, NULL,ts_set_point),
__ATTR(ts_en_file, 0777, NULL,ts_set_point),
__ATTR(ts_ Calibrate, 0777,NULL, ts_set_point),
b. 修改system/core/include/private/android-filesystem-config.h
{ 06755, ADD_ROOT, ADD_ROOT,“system/xbin/tcpdump”} -------------------------------------------------------------------------------------------------
android.app.cts.SystemFeaturesTest
-- testLocation Features fa
il
junit.framework.AssertionFailedError:
PackageManager#hasSystemFeature should NOT return true for workat
android.app.cts.SystemFeaturesTest.assertNotAvailabl e(SystemFeaturesTest.java:375)
原因:未配置相对应功能(开启Location access中所有开关(gps和wifi))
解决方法:将..\frameworks\base\data\etc\android.hardware.location.gps.x ml拷贝到
..\mediatek\config\{PROJECT}\android.hardware.location.gp s.xml目录下并做修改
<permissions>
<feature name="android.hardware.location" /> ----打开
<feature name="work" /> --
--打开
<feature name="android.hardware.location.gps" /> ---无GPS则关此项
</permissions>
6、这种情况最多的。
-- testFocusDistances fail j parisonFailure:expected:<infinity> butwas:<auto> at
android.hardware.cts.CameraTest.testFocusDistancesByCamera
(CameraTest.java:1386)
对于这个fail的原因是CTS对摄像头测试时,对摄像头进行参数设置,然后在读取参数后,参数出错。
这种情况要找到CameraTest源码,通常在source/cts/...下面,我们编译时没有编译到这里,仅查看代码,例如找到CameraTest.java,打开后找到1386行,行数一般情况下不会有出入,除非source下面的cts版本和下载的cts版本不一致才会找不到,找到testFocusDistancesByCamera,然后根据代码查看具体的测试,然后在找camera的源代码,使用Log跟踪,当然这个测试一定要结合做该模块的人一起改才行,不然很容易引起其他问题。
其中camera CTS测试代码在:
source/cts/tests/tests/hardware/src/android/hardware/cts/C ameraTest.java
摄像头设置的相关代码在:Source/device/Samsung/exynos4/libcamera/下面,有SecCameraHWInterface_zoom.cpp、SecCameraHWInterface_zoom.h、SecCamera_zoom.cpp、SecCamera_zoom.h
找到之后通过修改后测试再修改后再测试直到CTS PASS。
(对于摄像头,应注意是几个摄像头,不然测试可能会对两个一起测试,这样就算一个摄像头调好了,能PASS了,另外一个过不了也是FAIL的。
)
---------------------------------------------------------------------------
android.app.cts.SystemFeaturesTest#testCameraFeatures FAIL
junit.framework.AssertionFailedError:
PackageManager#hasSystemFeature should NOT return true for android.hardware.camera.autofocus
原因:手机无自动对焦功能
解决方法:去除..\mediatek\config\{PROJECT}\android.hardware.camera.xml文件中
<feature name="android.hardware.camera.autofocus" />
7.Android.app.cts.SystemFeaturesTest#testLocationFeatures
該項是測試設備利用無線網絡信號進行粗略定位的功能
Root Cause:缺少google网络定位的服务包NetworkLocation.apk,但是机器用getSystemFeature依然有这项功能。
Solution:要么移植服务包,要么disablesystemFeature。
我暂时选择后者。
将/framework/base/data/etc/目录下xml文件里面的所有.”work”注释掉即通过
8.Android.holo.cts.HoloTest包
該項是測試設備显示的widget view是否跟他提供的图片相一致,精确到像素点。
Root Cause:分辨率设置问题
Solution:将修改build.prop
ro.sf.lcd_density=160可以通过测试,但是Blaze Launcher菜单显示不能全屏,考虑修改api
9.Android.mediastress包
該項是測試設備能否正常播放google提供的视频文件
Root Cause:确定是否将cts-media包copy到sdcard目录、确定是否正常播放视频文件。
不能正常扫描播放,可能是视频驱动问题Solution:将cts-media文件放到sdcard,检文件能正常扫描播放,测试通过。
10.Android.permissin.cts.DebugableT est#testNoDebuggabl
e
该項是測試相应的app是否有debugable的标志
Root Cause:AndroidManifest文件里面android:debuggable=“true”
Solution:将android:debuggable=“true”改为false
11.Android.security.cts.PackageSignatureTest#testPackageSi gnatures
該項是測試应用包是否使用google默认的签名文件
Root Cause:使用默认的签名编译code
Solution:build/target/product/security/下面的签名换成自己做的。
做法在该目录下README有详细说明
12.Libcore cts部分
Libcorects部分主要测试的是设备里面javaapi是否正常工作。
当某部分异常的时候,cts对该项测试就会失败。
根据实际的工作成果,得出一般libcore测试失败大部分都跟你
cts配置是否正确有关,而不是javaapi存在问题,比如测试之前是否factory reset就会影响其部分测试结果。
所以在尝试各种方法无果后,进行一下reset可能它就能过。
以下是我做过的一些cts debug项。
1>.Libcore.java.text.dataFormateSymbolsTest
#test_getInstance_invalid_locale
Root Cause:
Solution:执行factory reset后,pass
2>.Libcore.java.text.SimpleDateFormateTest#testNonDstZon eNameWithDstTimestamp
Root Cause:该测试失败原因是因为java的SimpleDateFormate 类无法解析Daylight time夏令时区造成的
Solution:追api无果下,factory reset。
Daylight时区正常解析,pass
3>.Libcore.java.util.OldTimeZoneTest包
Root Cause:java无法解析daylight夏令时区造成
Solution:factory reset
4>.URLConnectionTe st#test_getAllowUserInteraction
Root Cause:java无法连接网站造成,nexus机器同样无法通过该测试
Solution:无解。
Google在新版本的cts测试中已经去掉连接该网站的逻辑部分。
13、DisplayRefreshRateTest
android.view.cts.DisplayRefreshRateTest
-- fa junit.framework.AssertionFailedError at
testRefre shRate il android.view.cts.DisplayRefreshRateTest.testRefreshRate (DisplayRefreshRateTest.java:168)
A3.关于这个刷帧率的问题,采用临时修改的方法
./frameworks/base/services/surfaceflinger/DisplayHardware /DisplayHardware.cpp下在硬件初始化阶段
[cpp] view plaincopy
1.mRefreshRate = fbDev->fps-5;
[cpp] view plaincopy
1.mRefreshRate = fbDev->fps-5;
调整为:
[cpp] view plaincopy
1.mRefreshRate = fbDev->fps-4;
[cpp] view plaincopy
1.mRefreshRate = fbDev->fps-4;
2.
14、
Compatibility Test Package: android.permission
Test Re
su
lt
Details
android.permission.cts.FileSystemPermissionTest --
testAllFilesIn SysAreNotWrita ble fa
il
junit.framework.AssertionFailedError: Found writable:
[/sys/devices/virtual/input/input3/enable_ps,
/sys/devices/pci0000:00/0000:00:03.4/i2c-5/5-
0068/delay,
/sys/devices/virtual/input/input3/delay_ps,
/sys/devices/virtual/input/input3/enable_als,
/sys/devices/virtual/input/input3/delay_als,
/sys/devices/pci0000:00/0000:00:03.4/i2c-5/5-
0068/enable,
/sys/devices/virtual/input/input3/enable_gs] at android.permission.cts.FileSystemPermissionTest.test AllFilesInSysAreNotWritable(FileSystemPermissionTest .java:577)
将相应的delay_ps这些文件进行设置权限,rw-r-r
15、
Compatibility Test Package: android.view
Test Res
ult
Details
android.view.cts.DisplayRefreshRateTest
-- testRefre shRate fai
l
junit.framework.AssertionFailedError at android.view.cts.DisplayRefreshRateTest.testRefreshRate (DisplayRefreshRateTest.java:198)
可以从Log中看到需要设置的刷新率的大小。
需要让驱动修改该值
16、
android.media.cts.StreamingMediaPlayerTest
-- testHLS fa
il
junit.framework.AssertionFailedError: Stream did not play successfully after all attempts at android.media.cts.MediaPlayerTestBase.playVideoWit hRetries(MediaPlayerTestBase.java:196)
--
testHTTP_H264Bas e_AAC_Video1 fa
il
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details
--
testHTTP_H264Bas e_AAC_Video2 fa
il
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details
HLS测试是这样:带宽分为200000,360000,500000,800000,1200000,客户端会根据当前获取的带宽值选择是否播放高清还是普通视频,
公司的带宽比较大,但实际真正的带宽可能会小好多,导致去播放高清视频是会很卡,然后失败
解决方法:
参考8x25平台做法,在system.prop里面对带宽做限制:
media.httplive.max-bw = 360000
最大带宽限制在360000,这样,测试HLS的时候,就只会去播
放200000的普通视频,基本可以通过。