(一)开始
涉及Android版本:Android 8,Android Go,Android 8.1,Android P
内容包括:工具检查,报告要求,自检项,自检项把go分开讲,因为Go上面有许多额外的要求
(二)软件版本和工具确认
- 工具版本确认:谷歌工具时限会不确定时间更新,需要向代理确认是否过期向代理确认
- Android补丁完整性检查:下载安装SnoopSnitch检查,后面也要求跑STS检查补丁完整性,但是谷歌到今日也没确定一定要全怕啥(2018-10-19)向代理确认
- clientidbase检查:跟代理和客户确认该值向代理确认
- 开机log必须带有Android字样。且符合谷歌要求向代理确认
GMS报告
device name属性值必须满足要求:^[a-zA-Z0-9_-]+$(数字或者字母或者下划线、中划线)
Android 版本 |
CTS |
GTS |
STS |
CTS verifier |
VTS |
GSI |
perf-scripts |
Android 7.0+7.1 |
√ |
√ |
√ |
√ |
x |
x |
x |
Android 8.0+8.1 |
√ |
√ |
√ |
√ |
√ |
√ |
x |
Android Go |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
- 除了STS,其他报告要保证只有pass项和waive项
- 报告都必须全部跑完
- 如果是SMR版本不需要按照上面的标准跑
(三)自检项
设备名称检查
所有送测设备,设备名称(包括Device Name, Product Name, Model Name, Marketing Name),以及外包装等等宣传资料上的Name,绝不可以带有Go或者GO的字样。否则就违反了最新的Android Go branding guideline。
fingerprint:要求本次送测出去的版本的fingerprint要与上次不一致,不管上次是否送测成功
- V E R S I O N . I N C R E M E N T A L 与 r o . b u i l d . v e r s i o n . i n c r e m e n t a l , VERSION.INCREMENTAL 与ro.build.version.incremental, VERSION.INCREMENTAL与ro.build.version.incremental,DEVICE与ro.product.device, B R A N D 与 r o . p r o d u c t . b r a n d , BRAND与ro.product.brand, BRAND与ro.product.brand,PRODUCT与ro.product.name等等。
- Fingerprint属性值没有空格或者空白符
first api level属性检查:
- 首次认证的项目不能定义ro.product.first_api_level;必须为空;
- MR版本必须设置为首个认证版本api level值,即如果首个认证版本是7.0,则MR版本认证时,该属性必须设置为24.
Geo Availability检查:确定内置的谷歌应用是否有遗漏。
特别注意俄罗斯,中国,朝鲜,伊朗版本,因为这些国家要么无法连接谷歌服务器,要么有其他限制,所以系统更加简洁,内置的谷歌应用数目少于正常gms版本
Android log和开机动画
- “Powered by Android” mark不允许有任何修改
- Android Mark和Brand组合的时候,Android Mark必须放到底部居中位置(注意),每页只能与一个brand组合,且Android Mark不应该大于Partner Logo的90%
- Powered by Android Mark可以和其他Brand组合,但必须显示在开机第一个界面,且显示时间不能小于1秒。(备注:开机过程中不能出现两次)
- 背景颜色只能是黑色、灰色或亮色,
- Android mark如果不与额外的brand结合使用,那么该Mark必须位于屏幕的正中间
- Android Go 项目需要使用不同的Android mark,具体请参考最新的Android Bootup Animation Requirements.
- Android Mark单独显示在第一屏,则要求Android Mark logo size竖屏状态下不得小于屏幕宽度的25%,不得大于屏幕宽度的50%
- 谷歌应用:不得修改icon的size和color
- 不得省略app下面的label
- 不得使用过时的icon(不要rro谷歌应用图标)
Andorid 开发者模式和部分功能要求
- 检查开发者选项USB调试选项默认关闭
- 打开USB调试开关后,插入USB线,必须弹出“Allow USB debugging?”的提示框。
- 桌面必须有Google Search widget (除Russian build外)
- Google Play Store图标必须放置在主界面
- 检查手机能进入到安全模式,[备注:原生进入方式:长按关机菜单]。
并且在重启并进入安全模式之前,需要如GMS Requirement v5.0中所说,
显示右侧的提示框供用户选择是否重启进入安全模式。特别注意Android O的订单
- Settings->Security->检查Unknown sources的默认勾选状态,必须默认不勾选(只适用于安卓8.0之前)。
- 对于安卓8.x, 进入Settings->APP¬ification->Advanced->Special app access->Install unknown apps,检查所有APP的“Allow from this source” 默认值必须是Not allowed。
- 连续点击版本号,进入开发者选项中,查看usb debug选项状态,必须默认不勾选
- Settings->About Phone里必须有一项显示Security Patch Level。
- Android 7.0及以上的设备必须在Developer Options Settings里保留切换device上available的WebView Provider的menu。
Google文件夹
- Google文件夹中不允许有非Google应用,而且必须放置所有谷歌Core GMS应用(在最新GMS Requirements 文档中有列表),并以文档中规定的顺序,排序位置如右图所示(针对非Go设备)。
- 开机进入桌面之后,必须在home界面(显示谷歌文件夹和google play)弹出权限后选择权限仍然在第一页。
俄罗斯要求
如果是销往Russia的机器,必须要有Russia feature,查看方法:
- adb shell pm list features 验证com.google.android.feature.RU是否存在
- 销往Russia的设备:缺省Home Screen必须用Chrome search Widget替换Google Search widget。预置的Chrome apk版本必须是稳定版M60以上版本。具体有关widget size和其它需求请参考本页第31项右侧的JIRA子任务。
另外,必须设置device 缺省Locale为ru_RU。(如果该设备上市时间再2017.12.31前,可以不用满足,否则必须满足)
浏览器要求
对于Browser Filter (http://),如果device中预置了不止一个browser,则应该缺省显示一个Chooser界面让用户选择打开的browser。且应用排序在英文状态下必须按照字母顺序A-Z显示;或者将Chrome应用置顶。
测试参考方法:
adb shell am start -a android.intent.action.VIEW -d http://testerhome.com
home 按键长按
长按Home键需发送KEYCODE_ASSIST,即keyevent 219。要与adb shell input keyevent 219命令拉起的界面一致。而Google App必须是Assist Action的default Handler。建议在连接能的wifi场景下测试。此为GMS Requirements v5.0中的要求。
谷歌短信
- Android O之后要求内置谷歌短信(GTS 6.0R1工具要求)
- 对于预置了谷歌Android Messages以及Carrier Services的设备,请参照GTS 5.1 R4 User Guide文档第10页中CarrierServicesTests一节,设置正确的permission以及property值(ro.com.google.acsa=true),否则GTS会报错。即使不报错,也请正确设置以上需求。
GSI版本与CTS版本差异问题,product属性与vendor属性
1.
GSI load和user load的density值相等,security patch date也要一致。
adb shell "getprop |grep density": density of GSI build = density of user build
adb shell "getprop | grep security": Security date of GSI build = Security date of user build
2.
1. Brand Name要保持一致,比如:
[ro.product.brand]: [TINNO]
[ro.vendor.product.brand]: [TINNO]
2. Device Name要保持一致,比如:
[ro.product.device]: [k101]
[ro.vendor.product.device]: [k101]
3. Manufacturer要保持一致,比如:
[ro.product.manufacturer]: [TINNO]
[ro.vendor.product.manufacturer]: [TINNO]
4. Model Name要保持一致,比如:
[ro.product.model]: [K101]
[ro.vendor.product.model]: [k101]
5. Product Name要保持一致,比如:
[ro.product.name]: [k101]
[ro.vendor.product.name]: [k101]
MTK log
若是有Mtklogger, Mtklogger的版本要≥4.2.0,且默认为关闭状态。
U形屏要求
对于U型屏,横屏模式下,对于第三方app,display cutout区域不可以覆盖APP UI和内容,也就是
在横屏状态下,U形屏区域不能遮挡正常应用显示
Android P的要求
Android P 设备必须支持DNS over TLS,
表现为UI上必须支持显示右侧的Private DNS选项框,包含三个选项。并且缺省选择应该放置在Automatic上。
该设置在Settings -> Network & internet settings里。
Android 9.0及以上的设备必须设置BOARD_SYSTEMSDK_VERISONS := 28。
Android 9.0及以上的设备必须定义PRODUCT_SHIPPING_API_LEVEL配置项,
用来指明该device初次commercial launch时的first API level。Android 9.0及以上的设备无论是new build还是MR,
ro.product.first_api_level都必须设置为正确的值。
(四)Android Go 特殊要求
相机
如果是512M内存的设备,最大屏幕分辨率不能超过FWVGA+; 最大相机分辨率不能超过 5MP
其它Android Go 设备的GMS需求,
其它Android Go 设备的GMS需求,请参考GMS Go Requirements - 2018-02-23.pdf,以及谷歌Android Go的官方device configuration文档,即"Android Go Device Configuration Guide - 20180224.pdf"。
而对于Android P Go设备,除了GMS Go Requirements之外,还请务必参考"Android P-Go Device Configuration Guide.pdf"。
文档地址见右方,Go设备performance测试脚本也在JIRA子任务里。在Device Configuration Guide文档中有以下规定(包括Android P Go):
- Bluetooth功能必须默认关闭。
- Screen Auto-Rotate 功能必须默认关闭。
- Live wallpaper app 必须移除。
- Data Saver 默认必须要关闭。
- FaceLock app 必须移除。
- Multi-Window support, Picture in Picture 和 Multi display 必须disable。
- managed_users feature必须关闭,work profile必须关闭。
- 对于Android P Go设备,还不能support widgets。
- 对于Android P Go设备,不能support Notification dots (BADGE_ICONS)。
- 对于Android P Go设备,Disk encryption必须要缺省enable。请参见9.0 CDD (http://jira.tinno.com:8080/browse/REQC-7599)。
- 对于Android P Go设备,必须支持Verified Boot(请参见9.0 CDD),谷歌推荐在P Go上使用Simplified Verified boot (dm-verity)。
其它Android Go 设备的GMS需求2
- 从即日起,Navigation Go (即GMS包中的NavGo app)变为Mandatory app,请注意务必将NavGo app预置在每一个Android Go New Device中。
- 所有预置的app以及通过Air方式(比如PAI,或某app store等方式)自动安装的app,都必须满足 minimum target SDK 26 (Oreo) or higher的要求。从2019/07/01开始,谷歌会reject不满足该要求的build。
- 请注意Android Go项目的GMS版本property值 (即 ro.com.google.gmsversion)末尾应该有go 字样,与非Android Go的项目不同。目前A-Go项目和非A-Go项目共用同一个GMS包,但分别使用不同的makefile。举例来说,对于201805版本的8.1 GMS包来说,A-Go项目的GMS版本值应为8.1_201805.go,而非A-Go项目的GMS版本应为8.1_201805。
- 在Go设备上,Google Go 必须是android.search.action.GLOBAL_SEARCH intent的default handler。 Google Speech Services 必须是RECOGNIZE_SPEECH intent的default handler。参见如下谷歌的英文描述:
In the absence of a conflicting third-party contractual requirement, Google Go (com.google.android.apps.searchlite) will be the default handler for the android.search.action.GLOBAL_SEARCH intent. Company agrees to use Google Speech Services (com.google.android.apps.speechservices) as the default handler for the RECOGNIZE_SPEECH intent.
- Userdata分区必须使用f2fs文件系统格式
- 如果设备Default Home Screen不支持进入App Menu,则在DHS的右边可以增加screens。
- 如果设备Default Home Screen支持进入App Menu,则除了DHS之外不要加其他的屏幕。
Optional GMS app icon应该满足以下条件之一:
1. 在default homescreen上;
2. 在hotseat上;
3. 在Google Folder里,并放置在所有Core GMS Go app icon的后面。
GMS Go里的Core app如果要放置在Google文件夹里,排序必须满足如下顺序:
(从左到右,从上到下)
Google Go,Youtube or YouTube Go,Gmail Go,Assistant Go,Maps Go。
任何GMS Go里的GMS app都可以放置在Hotseat或是default homescreen上,
如果某个GMS Go app icon放置在了Hotseat或是default homescreen上,
就需要从Google collection folder中拿掉,
但如果任何GMS Go app icon不在hotseat或是default homescreen上,那就必须按次序放置在Google文件夹里。
Chrome图标应该放在Hotseat位置,且hotseat还能放3个其他图标,
但如果是出往俄罗斯的Go build,Chrome图标可以不放在Hotseat位置,
且Hotseat必须放4个图标。
(注意:谷歌邮件回复说
We are okay with 5 Apps in the hotseat for devices that have 702px or more in width (Typically, HD and higher)),
所以对于HD及以上分辨率的handheld手机,
谷歌允许hotseat放置5个图标。低于此分辨率的最多只能放置4个图标。
Play store和Google folder 以及手机厂商的两个应用图标,
只能放置在dock之上的那一排,
并且除了Play store和Google folder之外
,这一排里手机厂商的应用图标最多两个。