赞
踩
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认证。
这篇文章,主要是基于android 13版本来做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 |
测试项: | 测试命令: | 模块测试命令 | 重测命令 | 结果 | 时间 | 备注 |
---|---|---|---|---|---|---|
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 |
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
只插SIM卡即可,不用做任何设置
我的刷机命令:
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
(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
上面刷机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认证的唯一标准主要在3pl实验室,并且各个版本各个时期有一定的变化调整,这个是需要及时的和实验室沟通。
GMS认证必须百分百符合认证的标准,就算是一个小小的差异,都是不能通过认证,需要重新再提交一次认证,并且可能还需要多交一次的认证费用,就问你,怕不怕。
我对于android操作系统的简单理解,android系统 = AOSP(Android Open Source Project) + GMS认证。
AOSP, 此部分源码是开源的,大家都可以拿到codebase,这部分当然重要,但是google对于android系统的绝对控制,其实就是通过GMS认证来完成的,你说GMS认证重要不重要,甚致GMS认证的重要性,还要远超我们的想像。
打个不恰当的比喻,GMS认证就是google控制android系统生态的屠龙刀,宝刀在手,天下我有。华为手机,就是google 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承担了所有,兄弟,一路走好,江湖路远,下次再会。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。