| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> GMS笔记 -> 正文阅读 |
|
[移动开发]GMS笔记 |
目录 一、GMS简介 1.1 什么是谷歌GMS认证??????????GMS全称为Google Mobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,也是Android系统的灵魂所在。 ????????GMS目前提供有Search、Search by Voice、Gmail、Contact Sync、Calendar Sync、Talk、Maps、Street View、YouTube、Android Market(ICS上更改为Play store)服务。当用户使用谷歌服务的时候,谷歌可以把广告嵌入各种谷歌的服务中,比如:用户在使用谷歌地图的时候,就能发现搜索地名关键字的广告。在使用谷歌移动搜索的时候,不用说,当然也是有广告的。谷歌其实是拿用户的注意力来换取广告主的金钱。而且Android智能手机操作系统其实也就是谷歌把自己的服务主动放到了手机上,进一步巩固自己的市场地位。 依据GMS,谷歌对android手机给予不同程度的授权,把搭载Android系统的手机厂商分为三个级别: 1.免费使用Android操作系统,但不内嵌GMS; 2.内嵌部分GMS服务,但手机不能打上谷歌的商标; 3.内嵌所有的GMS服务,也可以使用谷歌商标。如果在android手机中内置有谷歌GMS服务的话,是等同被谷歌官方认证过的产品。 ????????大陆地区,目前所有行货手机都不能通过GMS认证。GMS认证并不是想象的那么容易,谷歌要根据厂商的实力和地区因素来考虑是否认证。对于厂商来说,GMS除了获得更多的谷歌服务权限之外,还是拉开品牌区隔度的有效手段,也就是身份证明。由此可见从一个厂商是否通过GMS认证,来简单的判断这个厂商的综合能力。 1.2 GMS认证的必要性? 提升产品Android系统的兼容性和稳apk定性。 1.3 未进行GMS认证的风险? 在设备未认证的情况下,Android应用有可能不能正常工作。 1.4 GMS认证的主要流程1. 申请与Google签署MADA,AFA等一系列协议。 流程图: ? 1.5 项目如何快速通过谷歌认证??
CDD
,全称是
Compatibility Definition Document
兼容性定义文档。这个是
Android
开发的规范,注意
开发的时候按这些要求开发。其次我们设计的产品还需要满足
GMS Requirements
需求。
1.6 送测类型1.6.1 MTK平台????????目前mtk平台默认express基本,我们可以选择express or express plus送测两种方案 其中需要注意的是express plus对很多google应用布局的位置及是否为default 有强制要求,要求较多,具体可参阅GMS EXPRESS PLUS 相关的文档,此外google还提供了express plus 的python 脚本来check 是否满足express plus 的要求 1.6.2 高通平台? ? ? ? 目前有MSM8917 & QM215 P-Go & Qualcomm SD 662项目支持express,QM215 Q已经向google提交了express申请,还在开发中。 1.6.3 展锐、瑞芯、全志? ? ? ? 目前项目上还未接触,接触之后在学习。 二、测试过程中的异常分析2.1 CTS&&CTS Verifier????????CTS是Compatibility Test Suite的缩写,即兼容测试,是Google为Android设备制造商免费提供的兼容性测试套件。CTS定义了众多Android设备必须满足的技术指标,以确保每台通过CTS认证的设备,都可以顺利运行Google Play中出售的软件。(并不是每个软件都可以在所有Android设备上运行,Google Play仅显示可以运行在该Android设备上的应用,并且还受到当地法律法规的限制。) 目前CTS只能在Linux环境中运行,在Windows环境中无法使用。CTS的目的就是让Android设备(如:手机)开发商能够开发出兼容性更好的Android设备。 ? ? ? ? CTS Verifier是手动测试软件,google提供的一系列软件测试来检测系统的稳定性.CTSVerifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测试的功能,比如相机拍照质量、传感器的感知结果等。CTSVerifier会测试许多硬件,测试项会因设备支持的硬件种类多少而不同。它会自动检测设备支持哪些硬件,从而生成测试项。如某设备硬件支持NFC,将会有NFC相关的测试项,否则,就没有这些测试项。所以设备必须全部通过CTSVerifier中的各项测试。 目前CTSVerifier在公司可放在最后一个阶段,就是所有的CTS自动测试全部pass之后,再进行CTSVerifier测试。 2.2?Google?GMS认证测试几个名词? 2.3 测试过程中的异常分析2.3.1 CV异常?当我们收到CV异常,我们首先需要确认以下事项: 1.工具的版本是否正确。 2.使用的机器版本及硬件配置是否正确(sensor ,camera是否对应) 3.确认测试方法是否按要求执行,具体可参照右图,点击?查看每条的说明。 4.确认对比机(pix or 友商机)是否能pass 5.如果1~4都ok,下面我们结合fail 项目抓取pass or fail的log,对比确认异常点结合原码分析 原码可以用工程内部代码路径: /home/android/work1/work/P710/LA.UM.8.15/LINUX/android/cts/apps/CtsVerifier 这部分代码不是最新,可到google 原始地址http:// https://android.googlesource.com/platform/cts/+/refs/tags/android-10.0.0_r39/apps/CtsVerifier/src/com/android/cts/verifier下载和测试工具对应的代码,针对异常部分,可以添加log确认fail原因,再编译CtsVerifier 模块调试 常见的fail也可以参照MTK FAQ:https://online.mediatek.com/_layouts/15/mol/topic/ext/TopicContentFrame.aspx?id=2caf9a70-1913-4ec4-900c-b289b31ffc7d ? 如果分析过程中确认是CTS-Verifier工具的问题,请及时联系各sideTAM下载最新的工具验证 常见的fail项: 1.硬件和软件配置不一样,硬件不支持软件配置了相关的feature. 2.机器wifi,bt 地址丢失 3.多用户测试后,干扰目前的测试项 2.3.2 CTS
CTS:
是一个测试套件,主要是兼容性相关的测试,确认是否满足
CDD
的要求。
1.首先我们需要在本地复测, GMS测试小组用的MTS工具,我们建议用本地环境run cts –m xx –t
xx
重新跑一次,如果仍然
fail
可以
check
报告同目录下
hots_log & test log
确认异常点
?2. 查看MTK online 确认是否芯片厂家已经申请了wavie(如下图) 上面所示如果标明id及wavie请联系TAM取dailybuild版本验证,如果只标明id需要google确认后,方可能确认是否为google 问题。 比如说,目前在CtsAlarmManagerTestCases 出现fail 对就的代码在: /home/android/work1/work/P710/LA.UM.8.15/LINUX/android/cts/tests/AlarmManager 对应工具的代码在: https://android.googlesource.com/platform/cts/+/refs/tags/android-cts-10.0_r4/tests/AlarmManager/ 根据host & test log中的提示找到fail异常的地方,如果是apk的问题可以尝试回退apk或者删除apk来定位,或者从framework层加log,定位异常,想从根本上解决,加log编译对应的测试apk。 常见的fail: 1.CtsOmapiTestCases/CtsCarrierApiTestCases ?用错测试 白卡 2.网络异常引起的media fail 3.机器没有校准引起的sensor fail 4.Camera 光线弱引起的fail 2.3.3 GTSGTS:主要是测试权限、mada 等和google 交互性相关及不同出货地区如EEA,RU特殊需求测试 GTS因为没有原码,我们只有根据现有host log & test log查看具体的fail原因 1.首先我们需要确认一下,测试时配置的APE_API_KEY 的环境变量是不是正确 2.确认当前网络情况是否稳定,是否需要翻墙,测试的sim卡是否需要漫游 3.确认mtk online是否有 对应该版本的wavie项,如下图 ?4.出不同地区google app有不同的要求,去除后会有gmscore app相关的fail,这部分可以申请wavie 如果还找不到原因,可以尝试反编译对应该fail的项目,举例GtsAssistantHostTestCases 模块com.google.android.assistant.gts.AssistantTest#testAssistantTakePhotoWithVoiceInteraction faill 我们尝试反编译模块GtsAssistantHostTestCases ? ?R4可以PASS,R5 fail的原因是因为R5增加的测试限制,我们相机初次打开有向导干扰了测项,必须把向导点了才能拍照产生fail,为减少修改带来的风险我们直接加个判断,如果是cts测试调起的相关,直接不显示向导,完美解决此问题 2.3.4 GSI????????CTS-on-GSI表示通用系统映像上的兼容性测试套件(CTS)。 大多数CTS-on-GSI测试都是一种SDK API测试,可以间接测试VINTF(Vendor Test Infrastructure)。 它由CTS测试用例的子集和一些专门为VINTF设计的新测试用例组成。 ????????GSI相关的fail,我们处理时需要注意,因为刷了 ?google的system image, 我们分析问题时只需要看vendor及其它分区的修改即可。 分析方法同CTS, 原码下载路径 repo init -u https://android.googlesource.com/platform/manifest -b android10-gsi Google代码查看地址: https://android.googlesource.com/platform/test/vts/+/refs/heads/android10-gsi正常情况,如果发现是google自身的问题,请联系我取得最新的gsi image验证。 举例 1.之前我司发现默认的rro 资源放在vendor下面,因为刷了google gsi image导致资源找不到报错 2.默认apk放vendor分区产生fail 2.3.5 VTS????????VTS(Vendor Test Suite) VTS本身是指Android供应商接口(VINTF)的一致性测试套件,目的是提高Android设备生态系统的工程效率,启动速度,安全性和可靠性。主要测试以下部件 1.the Android system (e.g., Core HALs and libraries) and 2.low-level system software (e.g., kernel, module, and firmware)。 ????????VTS这部分涉及lib库及驱动相关的,需要请对应的硬件厂家协助 测试原码地址https://android.googlesource.com/platform/test/vts/+/refs/tags/android-vts-10.0_r4 VTS常用模块自测命令如下: ? 2.3.6 STS????????STS(Security Test Suite)主要是测试安全补丁的,google会每月释放安全相关的补丁给厂商,厂商必须在有效期内尽快 打上对应日期的SPL.补丁的级别分为两种1号和5号,高通用1号,MTK用5号(5号补丁是1号的基础上+厂商的修改)。 ????????根据host & test log中查看具体fail是因为哪条CVE引起的,确认项目中是否已经打了对应的 CVE patch,如果没有,应及时向对应的芯片厂家申请。 2.3.7 BTS
????????BTS(The Build Test Suite) 主要功能是扫描系统的应用是否非
PHA
(
Potentially Harmful Application)
,
在项目需求完成且客户
apk
全部内置
ok
后进行。
????????fail项分析,应用有危险权限,暴力内容等等
,
需要联系对应的
apk
负责人进行修正
三、Google reviewWavie需要事项: 如果需要我这边去向google申请wavie,需要提供单条report & ?对应log &bugreport给我,dailybuild能通过的尽量用dailybuild验证,因为申请wavie需要耗时很久,最终是否wavie还取决于 google QA 团队 四、ApproveWavie需要事项: Approve后我们需要确认手机GooglePlay中显示是否已显示认证,需要刷送测版本,正常生效时间是24小时,注意需要用lock的手机确认 五、更新GMS包和安全补丁5.1 更新GMS包?????????GMS包的版本一般有认证时间要求,超过时间会过期,GMS认证会失败 GMS的版本及时间要求参考文件路径: ftp://192.168.33.8/SW_DOC/Platform/Android/GMS_Certification/GMS版本及CTS版本到期时间表 ????????GMS包到期后需要我们更新GMS包,最新的GMS包的版本一般放在\\htsvr8\SW_DOC\Platform\Android\GMS_Certification\GMS Packages\ ????????不过更新GMS包一般不需要我们手动更新,通知配置切换gms的分支就行了,gms仓库是一个单独的仓库管理的,切换gms版本后,以前的仓库和修改就都不在了,所以需要我们手动合入之前gms仓库的一些修改。 ????????比如在我们更新仓库之前,可以看到我们gms的仓库是ft/GMS_OEM_11.0_202103 ?在通知配置切换后,变成了ft/GMS_OEM_11.0_202106 ?????????相当于在切换后,以前的仓库就被替代了,是一个新的仓库,提货单也会发生变化,所以需要我们对比之前GMS_OEM_11.0_202103上面的修改,把我们以前的修改,比如mk文件之类的移植上去 综上所述,更新GMS包可做如下总结: ? ?更改GMS仓库,即修改对应vendor/gms/目录内容,除了切换分支之外,还应该把以前的其他修改(GMS一些配置)重新提交到改目录下 ? 更改GMS版本,在gms认证的时候会检测gms版本属性,应该还需更新如下属性 详情参考http://jira.tinno.com:8081/browse/VFAAAECATEUE-1928 5.2 安全补丁更新????????安全补丁更新也是必要的,一般更新时候spm都会通知你,或者jira上会创建相关的case 补丁可以在服务器上获取,比如MTK的V500项目:ftp://192.168.33.8/SW_DOC/Platform/MTK/BASE/6761/android/alps-mp-r0.mp1-V8.67/ ????????1、 补丁如果获得的是一份差异文件,像这样: ?????????2、在差异文件钟执行diff命令生成一个google-11.patch文件 ?? ?命令如下:diff -Naur alps_pre alps > google-11.patch ????????3、上面生成的google-11.patch相当于是android目录下一个整的补丁文件,我们需要把他们打入我们需要的项目里面,可以将其拷贝到需要合入的项目android目录,执行patch命令将其分别打入对应的目录。最后会生成日志patch.log那些打入成功,那些打入失败,打入失败的需要自己手动解冲突 命令如下:patch -p1 <google-11.patch 2>&1 |tee ./patch.log? ?????????4、解决冲突 应用patch到时候会有一些输出,注意看是否有错误信息。应用完成以后记得查找一下.rej文件,如果有这种文件表示应用失败,一般的原因就是代码冲突。不要慌,打开这个.rej以及相应的.orig文件对比一下你就知道冲突在哪了,解决掉冲突就可以了。如下图,打开该文件,将最alps最新的代码复制进去,删除rej和orig文件就OK了。 ????????5、最后以几个大仓库(vendor、kernel-4.19、frameworks、external)进行提交代码,如下: http://gitcode.tinno.com/#/q/topic:%22PLATFORM_SECURITY_PATCH+:%253D+2021-11-05%22 ???????? 6、注意上面的补丁并没有修改build / make/core/version_defaults.mk里面的补丁日期, 因此最后还需要手动进来修改为对应的日期,如下提交: http://gitcode.tinno.com/#/c/130922/ |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 5:30:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |