写在前面的话
2023年来到一个新的公司,传说中的做互联网金融即将上市的高大上公司。
入职后才发现就是做pos机设备的一个小厂
哎,什么命啊!
工作和手机开发的工作重合度可以达到95%以上,我不想做手机,偏偏又干上了老本行了。
来吧,兄弟,开始你的新公司的工作旅程吧。
慢着,差点忘了介绍一下我的一个兄弟,非常重要的难兄难弟。
我们叫他x吧,x,武汉大学毕业,从业10+年手机开发,第二次入职此公司,和我同一天入职。
入职后,我负责一个S项目,他负责一个O项目。
公司原来系统组大概有个20来个人吧,在做一个T项目。今年疫情结束了,老板这几年做pos机听说挣了大钱,所以准备大干一场,目标三年上市。今年直接开了三个项目,一个是我负责的一个S项目,一个是x负责的一个O项目,还有一个新项目。
项目数由一到三,工作量增加到了三倍,那肯定要招兵买马,hr给力,非常给力,多招了二个人,一个我,一个x。
可以了,人员已经够多了的了,招人不要花钱了,如果你们活干不完,不会加班吗,996,懂不?
程序员嘛,都是一帮贱货,一定要好好压榨。
牛马们,好好干,老板明年给你们再娶个老板娘。
然后,我先做我负责的S项目,当我把需求移植的差不多后,老大和我说公司现在有一个工程模式mmi没有人负责,你来做吧。好吧,我就做工程模式mmi。当我把工程模式mmi做的差不多时,老大和我说现x兄弟负责的O项目,GMS认证不顺利,你来做吧。好吧,那我就接着做GMS认证吧。
这就是我入职这个公司负责GMS的由来。
可以看到,这个公司真是的人员配置严重不足,这种mmi工程模式,GMS认证,都是需要有专门的同事来负责的,并且每个都要求还有点高,而不是临时那里没有人就移一个人去。
哎,我在以前的公司负责过几年高通项目的GMS认证,我知道这个工作的恐怖,最后还是接到了这个工作。
无奈ing
其实x兄弟和我的工作状态也是一模一样,什么非常苦逼,什么恶心的活都是要一个人做.
包括这个GMS认证,主要是我们二个人做的。
GMS认证,这个工作的工作量特别大,特别是恶心,许多公司是有一个工位的工程师来专门追踪,处理这些认证的问题。而这个工位的工作量,我和x兄弟就这样分担了这些工作。
目的
这篇文章的目的:
不是指导如何来解决gms认证中那个失败项,而是可以有这样一个GMS认证纲领性的文章,一个新人可以依靠这篇文章来整体把握GMS认证,从而来完成GMS认证。
GMS认证(android 13版本)
这篇文章,主要是基于android 13版本来做GMS认证!
GMS认证的整体测试项
报告日期 | 软件版本号 | CTS–user | CTS verifier–user | GTS–user | GTS verifier–user | VTS–user版本刷GSI img和boot-debug.img | GSI–user版本刷GSI img) | STS–userdebug | CDD–userdebug | apts-go GO版本userdebug |
---|---|---|---|---|---|---|---|---|---|---|
2023.11.11 | v1.0 | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail | PASS/Fail |
GMS认证的各个测试项的测试命令
测试项: | 测试命令: | 模块测试命令 | 重测命令 | 结果 | 时间 | 备注 |
---|---|---|---|---|---|---|
CTS | run cts --shard-count 2 -s 0123456789ABCDEF -s 0123456789ABCDEA | run cts -m *** -t *** | run retry -r id | test_result_failures_suite.html,test_result.html | 32 cpu,4台机器,36小时 | 使用user版本 |
CTS verifier | 手动测试 | 手动测试 | 手动测试 | 手动测试,使用user版本 | ||
GTS | run gts | run gts -m *** -t *** | run retry -r id | test_result_failures_suite.html,test_result.html | 1台机器,12小时 | 使用user版本 |
GTS verifier | 手动测试 | 手动测试 | 手动测试 | 手动测试,使用user版本 | ||
STS | run sts-dynamic-full -s * 或 run sts-dynamic-incremental -s * | run retry -r id | test_result_failures_suite.html,test_result.html | 64 cpu,4台机器,8个小时; 32 cpu,1台机器,6个小时 | 使用userdebug版本 解压密码:sts | |
GSI | 在cts中:run cts-on-gsi | run cts-on-gsi -m *** -t *** | run retry -r id | test_result_failures_suite.html,test_result.html | 64 cpu 4台机器,24小时 ; 32 cpu 2台机器,24小时 | 使用user版本,刷GSI img |
VTS | run vts | run vts -m *** -t *** | run retry -r id | test_result_failures_suite.html,test_result.html | 64 cpu 1台机器,8小时; 32 cpu 1台机器,4小时 | 使用user版本刷GSI img和boot-debug.img |
CDD | 手动测试 | 手动测试 | 手动测试 | |||
APTS | run test/approval-go --fingerprint-swap DD/SDK-21D0/SDK-21D0:13/TP1A.220624.014/191:userdebug/release-keys -s * | run test/approval-go --test-case app-start-cold-3p -s * | summary.txt | 64 cpu 1台机器,8小时; 32 cpu 1台机器,4小时 | 使用userdebug版本, help apts |
其他常用的命令
常用命令 | |
---|---|
查看help | help, help all ,help run, help list |
测试32位或64位 | -a abi |
多台设备测试: | –shard-count X -s Sn1 -s Sn2 …-s Sn6(X 为同时测试设备数量,-s后面为测试设备的设备号) |
查看当前目录下的测试结果 | l r |
查看连接的机器信息 | l d |
help apts | run test/approval-go |
help apts | run test/approval-go --fingerprint-swap google/wembley/wembley:12/SP1A.210712.001/7539480:user/release |
help apts | run test/approval-go --test-case app-start-cold-3p |
测试前的机器设置
CTS/GSI/GTS/VTS/APTS测试前设置:
1.机器写入SN number/IMEI number/BT/wifi mac地址
2.插入有效SIM卡,SIM卡必须先写入My phone number(设置–SIM卡需输入当前测试卡号码)
3.机器连接VPN wifi (高速稳定翻墙网络)
4.开启蓝牙(无需连接)
5.设置->显示->睡眠->设置时间大于30分钟或从不
6.设置->安全->屏幕锁定>设置为none
7.语言设置成英文(United states)
8.设置->开发者选项->开启USB调试
9.Settings/developer options/stay awake “on”
10.Settings/developer options/Verify apps over USB “off”
11.使用2A 数据线
12.开始测试前,按home键进入home screen
13.复制测试需要的视频:
android-cts-media-1.5$ ./copy_images.sh && ./copy_media.sh
MTK的机器:
14.settings/Developer options/打开Allow Mock Modem
STS:
只插SIM卡即可,不用做任何设置
gsi刷google system步骤
- Flash MTK user full load
- Boot to home screen
- Settings -> System -> Developer options -> OEM unlocking
- Reboot phone into fastboot mode by “adb reboot bootloader” or “press volume up key + power key”
- Connect phone to PC and then type following commands
- fastboot flashing unlock (press volumn up key)
- fastboot reboot fastboot
- fastboot flash system system.img (system.img is GSI.)
- fastboot reboot
我的刷机命令:
Settings -> System -> Developer options -> OEM unlocking
adb reboot bootloader
fastboot flashing unlock
press volume up key + power key
fastboot reboot fastboot
fastboot flash system /home/google_img/signed-gsi_arm-img-10505706sep32/system.img
fastboot reboot
vts刷google system,boot-debug.img步骤:
(out/target/product/${variant}/merged/boot-debug.img)
1设置->系统->开发者选项->OEM 解锁及 debug打开
2在GSI文件路径中打开终端(boot-debug.img放一个路径)
3.通过“adb -s 设备ID reboot bootloader"或”按音量上键+电源键”重启手机进入fastboot模式
4.fastboot flashing unlock (按音量上键)
5.fastboot reboot fastboot
6.fastboot flash boot boot-debug.img(请获取boot-debug.img from MTK load.)
内核为kernel-5.10的项目
fastboot flash vendor boot vendor boot-debugima (请从MTK load 中获取vendor boot debug.img。)
7. fastboot flash system system.img
8.fastboot reboot
我的刷机命令:
Settings -> System -> Developer options -> OEM unlocking
adb reboot bootloader
fastboot flashing unlock
press volume up key + power key
fastboot reboot fastboot
fastboot flash system /home/signed-gsi_arm-img-10505706sep32/system.img
fastboot flash boot /home/Z1018AA_GMS_SK210_V202309211835_user/boot-debug.img
fastboot reboot
需要更新ADB & FASTBOOT版本:
上面刷机system img 和boot img,需要更新adb 和fastboot 版本,方法为:
// 下载压缩包
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
//解压到当前目录
unzip \platform-tools-latest-linux.zip
//复制到正确路径下
sudo cp platform-tools/adb /usr/bin/adb
//fastboot更新升级
sudo cp platform-tools/fastboot /usr/bin/fastboot
向谷歌提供的认证数据资料
1.二个刷机软件(user版本和userdebug版本)
2.boot-debug.img(位置:out/target/product/${variant}/merged/boot-debug.img)
3.告知googe需要刷机的googleimg是月份
4.提供各个测试项的测试通过报告(CTS,CTS verifier,GTS,GTS verifier,VTS,STS,gsi,apts-go)
5.CDD检测项需要通过
失败项解决的经验
1.基本drive only版本,将问题基本区分了android,芯片厂商(MTK,Qcom,etc),ODM三部分。
如果是android 和 芯片厂商(MTK,Qcom,etc)的问题,请求芯片厂商来解决(qcom提case,mtk提e-service)。
2.前面版本没有,后面版本新增的失败,归类为ODM修改导致的问题,请回溯版本解决。
3.MTK FAQ有许多失败项的解决方法,请查找。
4.查看测试的log
5.查看CTS 的源码,有的失败项可以看到其具体的测试流程,以便分析问题。
6.GTS的测试测试项,可以考虑反编译源码来分析问题。
7.咨询GMS认证的3pl实验室