GMS认证总结

来到一家新公司,除了解决系统稳定性的系列问题,还主要负责产品的GMS认证方面的工作。在GMS认证的过程中,还是遇到一些困难的,也有一些问题耗时比较久才得以解决。

在Android8.0之后,GMS认证除了CTS,GTS,CTS-verifier还多了VTS,STS。其具体含义可以查询官网。下面来讲解下

主机环境搭建

  1. 请安装64位的ubuntu版本
  2. 环境配置

Ubuntu下可以加载到~/.bashrc或者编辑以下内容到文件中如env,测试前source env
export JAVA_HOME=/home/
你的用户名/Software/jdk1.8.0_77
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PATH=/home/
你的用户名/Software/android-sdk-linux/tools:$PATH
export PATH=/home/
你的用户名/Software/android-sdk-linux/platform-tools:$PATH
export PATH=/home/
你的用户名/Software/android-sdk-linux/build-tools/19.0.0:$PATH

android-sdk-linux.tar.gz可以从网上下载

注意请确保android-sdk-linux/build-tools/19.0.0目录下有appt程序,否则会报相应的提示错误,若出现请相应修改对应的路径即可。

如果出现aapt不可用,请安装c++兼容库:
sudo apt-get install lib32stdc++6 lib32z1
2.
安装Python开发包
$ sudo apt-get install python-dev
3.
安装 Protocol Buffer工具
$ sudo apt-get install python-protobuf
$ sudo apt-get install protobuf-compiler
4.
安装 Python 虚拟环境相关工具
$ sudo apt-get install python-virtualenv
If you use python3, you can try this:
$ sudo apt install virtualenv
$ sudo apt-get install python-pip

机器环境

  1. 由于集成了GMS包,烧写结束后第一次启动会比较慢,请耐心等待,开机启动后完成GMS
  2. Setup Wizard中的设置,设置默认语言为United States Englishwifi部分请先跳过,时区可选择+8上海,设置用户信息,进入Home主界面;
  3. 确保机器按以下配置,Settings-\>Wi-Fi连接wifi,连接网络环境,主机也要连接
  4. 开始测试CTS GTS之前,切记不要登录GMS账号,否则会有fail
  5. 测试GTS前,请烧写Key,请仔细阅读第六章第1节,否则会有fail,具体项参见第八章。
  6. Settings-\>Security-\>Screenlock选择None
  7. 如果产品(如laptop类产品)带物理键盘,Languages & input-\>Physical
  8. keyboard-\>Show virtual keyboard,勾选该选项;
  9. 连续点击Settings-\>About tabletphone-\>Build
  10. Number,使被隐藏的Developer Options显示出来;
  11. Settings-\>Developeroptions-\>Stayawake,勾选该选项;
  12. Settings-\>Developeroptions-\>Force GPU rendering,不要勾选该选项;
  13. Settings-\>Location打开定位服务;
  14. Settings-\>Display-\>Sleep设置成最长时间,将亮度调节到最暗(测试时间较长节省电量);
  15. 测试CTS,首先需要打开一次Chrome,并把欢迎界面点掉,确保测试 Chrome
  16. 的时候不会让弹出的账号登陆窗口影响了测试的进行。
  17. 拷贝媒体资源文件,需使用android-cts-media-version新版的媒体资源包。
  18. 执行媒体包下的脚本source copy\_media.sh&& source copy\_image.sh拷贝媒体文件。
  19. Settings-\>Security-\>Unknownsources不勾选;
  20. 查看Sensor校准状态,校准状态永久有效,如果该机器做过校准则不需要再做。测VTS前务必要确认校准状态,查看方法:cat
  21. /sys/class/sensor\_class/accel\_calibration,如果有值打印,类似accel calibration: -604, 131,535,则说明校准成功。未校准的机器将其水平静止放置,输入命令echo 1 \>/sys/class/sensor\_class/accel\_calibration即可校准,校准后请确认是否校准成功;
  22. 物理竖屏的机器要竖屏放置,物理横屏的机器横屏放置;
  23. 通过音量键调整设备音量适中,不要设置为最大音量;
  24. 开始测试前,请保证设备满电状态;
  25. 启动浏览器,并清除任何浏览器启动界面、设置界面或是登陆账户界面;
  26. 确保相机不被遮挡,相机对着对比度高,容易对焦的物体,同时确保有足够的亮度。
  27. 运行测试设备时,不得用于任何其他任务,必须放在一个固定位置,避免触发sensor
  28. 每次重新测试,都要将机器进行如上配置。

相关的测试工具包请向认证机构获取。有最新的就需要用最新的测试包,有一些问题可能和测试包相关。

CTS

Cts常用命令:

命令是死的,人是活的,命令时有更新,具体请用run cts –help-all查看当前版本的测试命令!

Cts一般都用多台机器同时测试,以数量换时间。

run cts –o --shards 3 -s SN1 -s SN2 –s SN3 ...

-o 可以跳过下载android-cts-media-version媒体资源包,对于已经拷贝过媒体资源的机器就很有用。

--shards 3 表示用三台机器同时测试

SN1,SN2,SN3要换成机器里面的具体SN

l d命令查看当前挂载了多少台设备

l r命令查看可以查看session id

对于CTS测试一遍大多数情况是过不了的,需要多次测试。

run cts –o –r session id --retry-type NOT_EXECUTED/FAILED --shards 3 -s SN1 -s SN2 –s SN3 ...

每轮测试完后都会生成测试报告,通过 l r命令可以查看具体的session id,以便通过上述命令再次进行测试

--retry-type指的是进行未测试项的测试还是Fail项的测试

当然也可以用子项plan测试那些未通过的测试项。步骤如下:

- 添加fail子项plan
help add查看
add subplan --session xx -n plan_name --result-type type
-
按新建的子项plan测试:
run cts -o -a arm64-v8a --skip-all-system-status-check --subplan xxxx

其中subplan可以通过l p命令查看

还有更多详细命令还请执行run cts –help-all查阅

单测报告必须执行命令:run cts -m CtsSystemCurrentApiSignatureTestCases -t android.signature.cts.api.SignatureTest#testSignature

GTS

  1. 在进行gts测试时最好把机器格式化,重新弄下机器的环境。不要再进行完cts测试继续执行gts测试,否则可能会有一些测试项过不了
  2. gts的命令和cts类似,基本上可以通用。若出现不能执行的情况,还请执行run gts –help-all自行查阅。
  3. gts测试请确保主机已经连接VPN,并且可以连上谷歌
  4. gts测试工具还请用最新的进行测试,可能会遇到一些最新的工具包可以过,旧版本的死活过不了的情况。
  5. android8.0之后gts有些测试项需要烧写谷歌的keybox才能过。

Gts测试要正确配置gts-pegatron-public.json文件。在~/.bashrc文件末尾添加

export APE_API_KEY='/home/tim/Software/gms/gts-pegatron.json'(路径要和文件所在一致)

STS

  1. STS请用最新的STS测试工具测试。
  2. STS测试请用userdebug的软件测试
  3. STS测试关闭wifi否则会有失败项
  4. STS测试工具解压需要密码:sts
  5. 测试命令 run sts

VTS

VTS测试需要替换谷歌的system.img。

比如将system-aosp_arm_a-2018-09-05.img烧入我们系统,烧入的时候选择user版本的软件,将我们的system.img直接替换为谷歌的,选择烧入全部的镜像文件,注意不要只烧入system.img文件,否则会出现进入系统要输入密码的“友好提示”!

  1. VTS测试请确保机器有连接VPN
  2. VTS分为两部份测试,对应有两个测试命令,run vts 和run cts-on-gsi

总结

在GMS测试中,很难有一次通过的情况,第一遍通常都是有一堆failed项。只能通过多次测试,得到最终结果。对于那些没能测试通过的就必须通过单项测试来解决相应的问题。当遇到公版软件可以通过,而我们的不能过的时候,这就让我们很郁闷。解决的方法:

  1. 测试整个模块看是否通过
  2. 横屏单项测试看是否通过
  3. 看竖屏单项测试是否通过
  4. 机器格式化之后,重新测试那一项
  5. 测试的过程中也遇到过单项测试死活不过,run –retry也不能过,但整个模块测试可以通过,出现这个情况就说明是测试包的问题了,很无耐此时我们只能重新测试
  6. 分析测试Log,从log找到解决方案
  7. 查看cts目录下的代码,分析其测试流程

当解决完一系列问题后,我们公司由于VPN网络太差和没有IPV6环境,导致一些测试项测试不过:

1.CTS

CtsLibcoreTestCases_libcore.java.net.SocketTest#testSocketTestAllAddresses

CtsNetTestCases_android.net.cts.DnsTest#testDnsWorks

这两个文件都需要IPV6的网络环境测试,只要3PL那边能过就可以

2.GTS

GtsExoPlayerTestCases

com.google.android.exoplayer.gts.DashTest#testH265Adaptive

 

GtsMediaTestCases

com.google.android.media.gts.WidevineH264PlaybackTests#testClearWith1080P30

com.google.android.media.gts.WidevineH264PlaybackTests#testClearWithUHD30  

com.google.android.media.gts.WidevineH264PlaybackTests#testL3With1080P30     

com.google.android.media.gts.WidevineH264PlaybackTests#testL3WithUHD30        

com.google.android.media.gts.WidevineHEVCPlaybackTests#testClearWithUHD30  

com.google.android.media.gts.WidevineHEVCPlaybackTests#testL3WithUHD30       

com.google.android.media.gts.WidevineHLSPlaybackTests#testL3With360P30

这些问题与VPN网络的好坏有关,有时可以过有时过不了,保证3PL那边能过就行

GMS认证有关网站

谷歌可以查到的CTS-bug

https://issuetracker.google.com/issues/111853144

认证有关资料的网站:

https://ressrc.com/category/android/gms/

STS有关patch这里有:

https://source.android.com/security/bulletin/2016-08-01

https://source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=e758417e7c31b975c862aa55d0ceef28f3cc9104

VTS测试相关介绍:

https://codelabs.developers.google.com/codelabs/android-vts-8/#0

CTS官网:

https://source.android.com/compatibility/cts?hl=zh-cn

vts官网:

https://source.android.com/compatibility/vts/systems?hl=zh-cn

CtsVerifier源码(当然Android源码里面也有):

https://android.googlesource.com/platform/cts/+/7542792/apps/CtsVerifier

你可能感兴趣的:(GMS测试)