android CTS和GTS測試FAIL項解決集錦
Fail的一些修改
1、直接設定問題
estUnknownSourcesOffByDefault |
fail |
junit.framework.AssertionFailedError: Deviceshould not ship with 'Unknown Sources' enabled by default.expected:<0> butwas:<1> atandroid.provider.cts.Settings_SecureTest.testUnknownSourcesOffByDefault(Settings_SecureTest.java:183) |
這種fail最好解決,直接按照字面理解就OK,設定---安全---預設關閉:未知來源。
2、permission
-- testSensorFeatures |
fail |
junit.framework.AssertionFailedError:PackageManager#hasSystemFeature(android.hardware.sensor.accelerometer)returns true but SensorManager#getSensorList(1) shows sensors []expected:<true> butwas:<false> atandroid.app.cts.SystemFeaturesTest.assertFeatureForSensor(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.light) returns true but SensorManager#getSensorList(5) shows sensors [] expected:<true> but was:<false>
原因:手機無光感
解決方法:去除..\mediatek\config\{PROJECT}\android.hardware.sensor.light.xml及
android.hardware.sensor.proximity.xml檔案中相應選項
3、由測試而引起的非測試項出錯
-- testRecordingHint |
fail |
java.lang.RuntimeException: start failed. atandroid.media.MediaRecorder.start(Native Method) |
這種情況要根據Logcat去檢視RuntimeException的具體錯誤。通常可以先不改,因為很難查錯。
4、網路問題
-- test_isReachable |
fail |
java.net.UnknownHostException: Unable to resolvehost "www.google.com": No address associated with hostname atjava.net.InetAddress.lookupHostByName(InetAddress.java:426) |
這類問題是由於國內的網路無法訪問國外網站導致的,最好的辦法就在公司搭建一個VPN,連結出去。
5、系統檔案許可權
-- testAllFilesInSysAreNotWritable |
fail |
junit.framework.AssertionFailedError: Foundwritable: [/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_power,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_en_file,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_Calibrate] atandroid.permission.cts.FileSystemPermissionTest. testAllFilesInSysAreNotWritable(FileSystemPermissionTest.java:364) |
-- testNoSetuidTcpdump |
fail |
junit.framework.AssertionFailedError at 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 | ||
-- testLocationFeatures | fail | junit.framework.AssertionFailedError: PackageManager#hasSystemFeature should NOT return true for android.hardware.location.networkat android.app.cts.SystemFeaturesTest.assertNotAvailable(SystemFeaturesTest.java:375) |
原因:未配置相對應功能(開啟Location access中所有開關(gps和wifi))
解決方法:將..\frameworks\base\data\etc\android.hardware.location.gps.xml拷貝到
..\mediatek\config\{PROJECT}\android.hardware.location.gps.xml目錄下並做修改
<permissions>
<feature name="android.hardware.location" /> ----開啟
<feature name="android.hardware.location.network" /> ----開啟
<feature name="android.hardware.location.gps" /> ---無GPS則關此項
</permissions>
6、這種情況最多的。
-- testFocusDistances |
fail |
junit.framework.ComparisonFailure: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/CameraTest.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檔案裡面的所有 .”android.hardware.location.network”註釋掉即通過 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.DebugableTest#testNoDebuggable 該項是測試相應的app是否有debugable的標誌 Root Cause:AndroidManifest檔案裡面android:debuggable=“true” Solution:將android:debuggable=“true”改為false 11.Android.security.cts.PackageSignatureTest#testPackageSignatures 該項是測試應用包是否使用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#testNonDstZoneNameWithDstTimestamp 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>.Org.apache.harmony.luny.tests.java.net.URLConnectionTest#test_getAllowUserInteraction Root Cause:java無法連線onearth.jpl.nasa.gov網站造成,nexus機器同樣無法通過該測試 Solution:無解。Google在新版本的cts測試中已經去掉連線該網站的邏輯部分。13、DisplayRefreshRateTest
android.view.cts.DisplayRefreshRateTest | ||
-- testRefreshRate | fail | junit.framework.AssertionFailedError at android.view.cts.DisplayRefreshRateTest.testRefreshRate(DisplayRefreshRateTest.java:168) |
- mRefreshRate = fbDev->fps-5;
- mRefreshRate = fbDev->fps-5;
- mRefreshRate = fbDev->fps-4;
- mRefreshRate = fbDev->fps-4;
Test | Result | Details |
android.permission.cts.FileSystemPermissionTest | ||
-- testAllFilesInSysAreNotWritable | fail | 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.testAllFilesInSysAreNotWritable(FileSystemPermissionTest.java:577) |
將相應的delay_ps這些檔案進行設定許可權,rw-r-r
15、
Test | Result | Details |
android.view.cts.DisplayRefreshRateTest | ||
-- testRefreshRate | fail | junit.framework.AssertionFailedError at android.view.cts.DisplayRefreshRateTest.testRefreshRate(DisplayRefreshRateTest.java:198) |
16、
android.media.cts.StreamingMediaPlayerTest | ||
-- testHLS | fail | junit.framework.AssertionFailedError: Stream did not play successfully after all attempts at android.media.cts.MediaPlayerTestBase.playVideoWithRetries(MediaPlayerTestBase.java:196) |
-- testHTTP_H264Base_AAC_Video1 | fail | Test failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details |
-- testHTTP_H264Base_AAC_Video2 | fail | Test failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details |
公司的頻寬比較大,但實際真正的頻寬可能會小好多,導致去播放高清視訊是會很卡,然後失敗
解決方法:
參考8x25平臺做法,在system.prop裡面對頻寬做限制:
media.httplive.max-bw = 360000
最大頻寬限制在360000,這樣,測試HLS的時候,就只會去播放200000的普通視訊,基本可以通過。
=================================android5.0+GMS-r3============================
17、android.hardware.camera2.cts.CaptureRequestTest-testAwbModeAndLock
修改vendor/intel/hardware/camera3hal/ipu2/3a/Aiq3A.cpp
- int us_min = 1000000 / minFps;
- int us_max = 1000000 / maxFps;
+ int us_min = 1000000 / maxFps;
+ int us_max = 1000000 / minFps;
修改vendor/intel/hardware/camera3hal/ipu2/CaptureStream.cpp
+#if 0
status = mCaptureDevice->setBufferPool(mV4l2CaptureBuffers, false);
status |= mPostviewDevice->setBufferPool(mV4l2PostviewBuffers, false);
+#else
+ status = mCaptureDevice->setBufferPool(mV4l2CaptureBuffers, true);
+ status |= mPostviewDevice->setBufferPool(mV4l2PostviewBuffers, true);
+#endif
18、GTS:com.google.android.xts.afw.AfwRequiredAppsOverlaysTest
新增AndroidForWork應用
19、GTS:testPermitAccessibilityServices
新增talkback應用