再谈谷歌GMS认证之Android 13

写在前面的话

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的由来。

无奈ing
在这里插入图片描述

可以看到,这个公司真是的人员配置严重不足,这种mmi工程模式,GMS认证,都是需要有专门的同事来负责的,并且每个都要求还有点高,而不是临时那里没有人就移一个人去。

哎,我在以前的公司负责过几年高通项目的GMS认证,我知道这个工作的恐怖,最后还是接到了这个工作。

其实x兄弟和我的工作状态也是一模一样,什么非常苦逼,什么恶心的活都是要一个人做.

包括这个GMS认证,主要是我们二个人来完成的。

目的

这篇文章的目的:
不是指导如何来解决gms认证中那个失败项,而是可以有这样一个GMS认证纲领性的文章,一个新人可以依靠这篇文章来整体把握GMS认证,从而来完成GMS认证。

GMS认证(android 13版本)

这篇文章,主要是基于android 13版本来做GMS认证!

GMS认证的整体测试项

报告日期软件版本号CTS–userCTS verifier–userGTS–userGTS verifier–userVTS–user版本刷GSI img和boot-debug.imgGSI–user版本刷GSI img)STS–userdebugCDD–userdebugapts-go GO版本userdebug
2023.11.11v1.0PASS/FailPASS/FailPASS/FailPASS/FailPASS/FailPASS/FailPASS/FailPASS/FailPASS/Fail

GMS认证的各个测试项的测试命令

测试项:测试命令:模块测试命令重测命令结果时间备注
CTSrun cts --shard-count 2 -s 0123456789ABCDEF -s 0123456789ABCDEArun cts -m *** -t ***run retry -r idtest_result_failures_suite.html,test_result.html32 cpu,4台机器,36小时使用user版本
CTS verifier手动测试手动测试手动测试手动测试,使用user版本
GTSrun gtsrun gts -m *** -t ***run retry -r idtest_result_failures_suite.html,test_result.html1台机器,12小时使用user版本
GTS verifier手动测试手动测试手动测试手动测试,使用user版本
STSrun sts-dynamic-full -s * 或 run sts-dynamic-incremental -s *run retry -r idtest_result_failures_suite.html,test_result.html64 cpu,4台机器,8个小时; 32 cpu,1台机器,6个小时使用userdebug版本 解压密码:sts
GSI在cts中:run cts-on-gsirun cts-on-gsi -m *** -t ***run retry -r idtest_result_failures_suite.html,test_result.html64 cpu 4台机器,24小时 ; 32 cpu 2台机器,24小时使用user版本,刷GSI img
VTSrun vtsrun vts -m *** -t ***run retry -r idtest_result_failures_suite.html,test_result.html64 cpu 1台机器,8小时; 32 cpu 1台机器,4小时使用user版本刷GSI img和boot-debug.img
CDD手动测试手动测试手动测试
APTSrun 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.txt64 cpu 1台机器,8小时; 32 cpu 1台机器,4小时使用userdebug版本, help apts

其他常用的命令

常用命令
查看helphelp, 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 aptsrun test/approval-go
help aptsrun test/approval-go --fingerprint-swap google/wembley/wembley:12/SP1A.210712.001/7539480:user/release
help aptsrun 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步骤

  1. Flash MTK user full load
  2. Boot to home screen
  3. Settings -> System -> Developer options -> OEM unlocking
  4. Reboot phone into fastboot mode by “adb reboot bootloader” or “press volume up key + power key”
  5. Connect phone to PC and then type following commands
  6. fastboot flashing unlock (press volumn up key)
  7. fastboot reboot fastboot
  8. fastboot flash system system.img (system.img is GSI.)
  9. 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实验室

写在最后面的话

GMS认证有一些特点:

第一个:GMS认证的工作特别繁琐

GMS认证,这个工作的工作量特别大,涉及到的合作方非常多,技术点包括从应用,系统,到驱动等各方面,特别是恶心,许多公司是有一个工位的工程师来专门追踪,处理这些认证的问题。

第二个:GMS认证的标准唯一和变化

GMS认证的唯一标准主要在3pl实验室,并且各个版本各个时期有一定的变化调整,这个是需要及时的和实验室沟通。

第三个:GMS认证的必须百分百符合

GMS认证必须百分百符合认证的标准,就算是一个小小的差异,都是不能通过认证,需要重新再提交一次认证,并且可能还需要多交一次的认证费用,就问你,怕不怕。

第四个:宝刀在手,天下我有

我对于android操作系统的简单理解,android系统 = AOSP(Android Open Source Project) + GMS认证。

AOSP, 此部分源码是开源的,大家都可以拿到codebase,这部分当然重要,但是google对于android系统的绝对控制,其实就是通过GMS认证来完成的,你说GMS认证重要不重要,甚致GMS认证的重要性,还要远超我们的想像。

打个不恰当的比喻,GMS认证就是google控制android系统生态的屠龙刀,宝刀在手,天下我有。华为手机,就是google GMS认证这把屠龙刀下的第一个祭品,当然也不会是最后一个祭品。

在这里插入图片描述

第五个:怎么重视GMS认证都不为过

做手机多年,我经常碰到做项目,所有的问题都解决完了,功能也开发完了,客户也确认软件了,现在机器可以量产出货了。但是这个时候,经常出现google GMS认证还没有通过,这个时候,领导和老板一般都急的要跳楼。

但是,为时晚已。

一般来说,出现这种情况,主要原因都是在领导身上,领导觉得这个GMS认证不重要,轻轻松松能过,或者基于以前做GMS认证的经验,没有投入人力和资料,或投入的人力和资料不足,导致不能通过GMS认证。

因为google GMS认证在测试项,工作量方面,随着版本的升级,都是几倍的增长,如果公司领导不重视GMS认证,或者仅仅基于以前做GMS认证的经验,基本上都是要在GMS认证方面折腾和吃亏。

所以:
1.重视GMS认证
2.在项目启动时就需要安排专门的精兵强将来统筹推进GMS认证,一直至拿到认证。(这个工位是不能少人的啊)
3.各个模块的同事及时处理自己负责模块的失败项和问题

才可能在GMS认证的工作上顺利完成。
注意,是可能,而不是肯定。

问你怕不怕。
在这里插入图片描述

最新的后续

因为各种原因,这个android 13 GMS认证 32位的项目成功拿到认证,64位的项目因为patch时间到期,没有拿到google的认证,经公司领导研讨,一致认为是此项目的负责人x同学的原因导致,在过年前几个星期n+1,成功从我们公司毕业。

最终还是x承担了所有,兄弟,一路走好,江湖路远,下次再会。

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfreeman2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值