这段时间接手了CTS认证相关的工作,在这里整理一下相关的问题。(同时感谢同事对此总结提供的帮助及补充) 1.0 Google Waive项目 这个部分的整理,根据CTS版本来进行分类,以R13为基础版本。 1.1 R13 1.1.1 CtsPermission2TestCases android.permission2.cts.PermissionPolicyTest#testPlatformPermissionPolicyUnaltered 报告分析,而后使用该分析报告,向Google申请豁免 1.1.2 CtsSecurityTestCases android.security.cts.StagefrightTest#testStagefright_bug_23270724 报告分析,而后使用该分析报告,向Google申请豁免 1.1.3 CtsWebkitTestCases android.webkit.cts.WebChromeClientTest#testOnJsBeforeUnloadIsCalled 该项为Chrome60版本的问题,使用59版本即可测过。也可使用nexus机器跑出的报告申请豁免。 2.0 常规项目 2.1 CtsAppSecurityHostTestCases 2.1.1 android.appsecurity.cts.AdoptableHostTest#testApps > 相关问题 a. android.appsecurity.cts.AdoptableHostTest#testEjected b. android.appsecurity.cts.AdoptableHostTest#testPackageInstaller c. android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage 这项测试主要是测试Internal Storage和Adopted Storage的功能及apk安装在不同Storage下的运行情况。测试手法建议如下。 1. 使用大容量高性能的TF卡 2. 清理Phone Storage 3. 重启后测试 2.2 CtsCarrierApiTestCases 2.2.1 android.carrierapi.cts.CarrierApiTest#testHasCarrierPrivileges 该项为白卡测试,需要使用特定的卡片测试。 2.3 CtsHostsideNetworkTests 2.3.1 com.android.cts.net.HostsideVpnTests#testAppDisallowed 该项需要在IPv6并且可以连接Google服务器的环境中测试。 2.4 CtsNetTestCases 2.4.1 android.net.cts.DnsTest#testDnsWorks 该项需要在IPv6并且可以连接Google服务器的环境中测试。 2.4.2 android.net.cts.MultinetworkApiTest#testNativeDatagramTransmission 有两种报错。 EPROTO (Protocol error):表示Wifi环境连接不上Server EPERM (Operation not permitted) :表示在手机段使用了翻墙软件,导致其底层认为该测试网络为虚拟网络。 所以该项需要使用可以直接翻墙的Wifi环境 2.5 CtsJniTestCases 2.5.1 android.jni.cts.JniStaticTest#test_linker_namespaces 从Android 7.0开始不允许app动态链接使用非NDK的so文件,所以也不允许预置so到/system/lib,/system/lib64,/vendor/lib,/vendor/lib64等目录下供app使用,请您打包您的私有so:/system/lib/libandroidmem.so到app中或者其他路径即可。 2.6 CtsLibcoreTestCases 2.6.1 libcore.java.text.OldDateFormatTest#test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition > 同类问题 同模块下 libcore.java.text.OldDateFormatTest#test_formatLjava_util_Date libcore.java.text.OldDateFormatTest#test_parseLString org.apache.harmony.tests.java.text.MessageFormatTest#test_formatLjava_lang_ObjectLjava_lang_StringBufferLjava_text_FieldPosition org.apache.harmony.tests.java.text.MessageFormatTest#test_formatToCharacterIteratorLjava_lang_Object、 org.apache.harmony.tests.java.text.MessageFormatTest#test_parseLjava_lang_String org.apache.harmony.tests.java.util.DateTest#test_toLocaleString 不同模块下 CtsTextTestCases android.text.format.cts.DateUtilsTest#testFormatSameDayTime 该项需要改为12小时制进行测试。厂商如果要求默认为24小时制也是OK的,实验室反馈可以在测试前手动更改。 2.7 CtsThemeHostTestCases 2.7.1 android.theme.cts.ThemeHostTest#testThemes 该项是由于内部客制化需求导致的,请从以下四个角度进行分析和修改。 1. 不可以修改alps\frameworks\base\core\res\res\values下的style.xml和theme.xml,如果有定制需求,可以修改styles_device_default.xml来达到修改UI的目的。 2. 不可以修改alps\frameworks\base\core\res\res\中原有的图片,layout,dimens,attrs,colors等所有资源或属性值, 可以新增资源或属性,不要修改名称或内容,也不要删除。 3. 不可以修改alps\frameworks\base\core\java\android\widget 目录下所有framework default的控件的源代码,若要客制化,请重载对应的函数。 4. 不可以修改 alps\frameworks\base\core\java\android\text\format\DateUtils.java文件中的private static String formatElapsedTime(StringBuilder recyle, String format, long minutes, long seconds)函数,此处会影响CTS中的chronometer的显示效果,如需客制化,请重载该函数。 2.8 CtsJankDeviceTestCases 2.8.1 android.jank.cts.ui.CtsDeviceJankUi#testScrolling 该问题有三种可能因素。 1. 修改了以下三个文件,导致fail,请回退修改。 /frameworks/base/core/java/android/view/View.java /frameworks/base/core/java/android/view/ViewGroup.java /frameworks/base/core/java/android/view/ViewRootImpl.java 2. 小内存型号预装过多APK导致开机时,内存占用过多,建议客户在CTS版本中移除不必要的预置。 3. 全面屏Patch导致,全面屏Patch导致的问题。 修改vendor/mediatek/proprietary/frameworks/opt/fullscreenswitchservice/src/com/mediatek/fullscreenswitch/FullscreenDataHelper.java文件,将com.android.cts.usepermission,android.ui.cts,android.jank.cts三个包名设为默认打开全面屏效果。当然不要全部默认打开所有CTS测试项的 2.9 CtsDpiTestCases 2.9.1 android.dpi.cts.AspectRatioTest#testAspectRatio 该项为18:9屏导致的Fail项,因为CTS要求的长宽比应在1.333 到1.86之间,而该屏比例为2.0,需要根据各自平台申请对应全屏Patch并打开对应的宏。 3 器件相关问题 3.1 Camera相关 首先有一个主要的思路就是,只测两颗摄像头,保证前后各有一颗被测试到即可,多余的摄像头,请在代码中屏蔽,不进行CTS 和Verifier测试。 由于这个模块问题比较多,后续会单独写一篇来加以介绍和修改。 android.hardware.camera2.cts.RobustnessTest#testMandatoryOutputCombinations 修改picture size和 preview size,之后编译libcam.paramsmgr android.hardware.camera2.cts.ImageReaderTest#testYuvAndJpeg 修改FeatureTable,去掉1080P以上的分辨率配置,例如"1680x1248" android.hardware.cts.CameraGLTest#testCameraToSurfaceTextureMetadata junit.framework.AssertionFailedError: Too many frame intervals out of frame rate bounds: 98, limit 4 此项是camera帧率项,取出log,观察是那颗摄像头fail,修改相应摄像头的驱动文件,不清楚如何修改的,可以问驱动同事帮忙,或者请FAE协助修改。 3.2 LCM 3.2.1 CtsViewTestCases android.view.cts.DisplayRefreshRateTest#testRefreshRate 该项是测试屏幕理论帧率与实际帧率的误差是否在2以内。 部分平台存在着全面屏支持问题,会导致屏幕帧率上限被锁死在58左右。如果这样适当下调理论值即可。 另外这边的修改会影响到GTS的帧率测试,改完后也验证一下。 3.3 Memory 3.3.1 CtsLibcoreTestCases libcore.java.io.FileInputStreamTest#testSkipOnLargeFiles 这一项测试的是内部存储的性能。首先,保证整3G以上的剩余空间。其次,需要保证足够的硬件性能,可以使用androbench进行测试。如果性能较差,建议寻求厂商优化。 |
谷歌GMS认证一般哪些测试不容易通过,怎么整改