这段时间接手了CTS认证相关的工作,在这里整理一下相关的问题。
点击查看:谷歌GMS认证送样要求?
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并打开对应的宏。
点击查看:GMS认证CTS测试流程
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以上的剩余空间。其次,需要保证足够的
关注华商检测,点击了解更多关于GMS认证资讯信息《为什么要通过谷歌GMS认证?》