Android TV是在2014年6月26日Google I/O上推出的,专门为TV和机顶盒产品设计的应用程序服务包。基于Android AOSP版本,加上GTVS包就可以编译出来Android TV的Firmware。和AOSP相比,Android TV提供如下内容:
• Leanback Launcher
• Google Services(Google Play,YouTube,Play Movie&TV, Play Games, etc.)
• Search and Assistant
• Google Cast
• GOTA
Android TV认证指的是整机认证,由ODM/OEM提交给Google做认证测试。 SOC厂家不需要做芯片级的认证。
一、Android TV 认证流程
1. 签完NDA后,可以访问Google的Help Center
2. 签完ACC后,Google会建立Project Tracker
3. 签完TADA后,可以从Google下载到GTVS包,并开通APFE(Android Partner Frontend)的访问权限
• GTVS包由Google提供
• Google Partner通过APFE来上传测试报告,也可以通过APFE来查询认证状态
4. 向Google申请白名单
5. 基于SOC release的ATV code, 加上GTVS包,编译出Android TV的Firmware
6. ODM/OEM完成CTS, CTS veriry, GTS, VTS, Smoking test测试,并上传报告到APFE
7. 寄机器给Google或Harman测试
目前只有Harman和和硕这两家第三方Android TV认证实验室
GMS包需要google开通权限后才能下载,编译Android TV版本的步骤如下:
1. 获取GMS包,解压到vendor/目录
2.source build/envsetup.sh
export BOARD_COMPILE_ATV=true
lunch marconi-userdebug
make otapackage
二.客制化
虽然添加了GMS包后编译的Android TV版本包含了几乎所有的apk及功能,但是还需要进行一些客制化才可以使用
1.Leanback Launcher上增加状态图标(Android TV官网叫微件),比如增加inputs,电池电量,wifi图标等
图 1. 主屏幕与系统栏中的微件
图 2. 系统栏中的打开TV 输入面板的开关
Tv Inputs的图标按照Google要求是必须显示的(盒子项目不需要)相关代码公版中已经默认加入,需要在device中加入该apk的编译配置
公版代码:vendor/amlogic/common/prebuilt/LauncherCustomization/res/raw/configuration.xml
其他图标比如wifi需要客户自己写一个apk,代码可以参考https://github.com/Jetson-TK1-AndroidTV/LeanbackCustomizer
文档可以参考https://support.google.com/androidpartners_androidtv/answer/7549452?hl=zh-Hans&ref_topic=7549694,里面有相关的介绍
2.蓝牙语音遥控器适配Google Assistant
Google Assistant需要用到蓝牙语音遥控器,需要根据遥控器修改audio hal
3.应用排序要求
Google强制要求launcher上UI图标排序,需要写一个apk并且增加xml的配置,需要排序的主要是分为收藏应用和应用视图.
收藏应用行
OEM 可以设置收藏应用行的现成顺序,用户以后可以移动、收藏或取消收藏这些应用。
图 3. 收藏应用排序要求
应用视图
通过“应用”图标、可选的遥控器按钮或长按主屏幕键即可打开应用视图。应用视图包含:
图 4.主屏幕应用视图与“应用”图标以及遥控器上的“应用”按钮的插图
4.PAI开机向导应用推荐
图 5. PAI应用推荐界面要求
图 6. PAI APK客制化流程
Google详细介绍网页:https://support.google.com/androidpartners_androidtv/answer/7507868?hl=zh-Hans
具体流程如下:
①将demo源码放到vendor/amlogic/common/apps路径下
②修改vendor/amlogic/common/apps/PlayAutoInstallConfig下stub和test下面AndroidManifest.xml中的包名,2个 xml修改后的包名必须完全一样
③修改res-test/xml/下的default_layout.xml,替换成需要预装的apk信息
④mm编译,会生成2个apk,其中PlayAutoInstallConfig.apk是必须预装到系统中的/system/app下,PlayAutoInstallConfig-test.apk和default_layout.xml需要上传到APFE中
5.客制化OBBE开机向导(非认证需求)
在Google TV项目中印度客户提出印度当地的网络较差,要求我们提供在OBBE的联网和登录界面可以支持跳过整个开机向导的功能,而Google也支持较大程度的客制化满足不同OEM厂商的要求
具体可以参考Google ATV介绍:
https://support.google.com/androidpartners_androidtv/answer/6188677?hl=zh-Hans&ref_topic=7507141
图 7. 设置向导流程中的自定义选项。
Google提供的demo中功能非常丰富,可以直接添加activity,但是如果只是支持skip网络和登录的功能,只需要增加2个xml中的config配置即可
三、白名单
项目开发过程中需要用到的白名单如下:
1.开机向导需要白名单,否则登陆账号无法跳过
需要烧录usid,也就是Google要求的串号ro.serialno
2.google cast需要白名单,否则无法使用cast功能
可以用iphone直接下载个youtube,和测试平台连接相同的wifi后即可测试
3.youtube付费视频需要白名单,否则最高只能播放到480P
该项测试主要在smoke test中,只需要看youtube中是否能到1080P以上
四、GTVS认证测试
一、smoke test
这个认证主要是根据google提供的excel表格进行的主观测试,由于文档中的描述比较简洁,如果测试时的侧重点不同,得到的结果也不同,所以人为影响非常大!
举例1:
Search Live TV app content with Remote Control button
这一条哈曼那边得到的要求如果进入tv app,需要将tv app中搜索到的内容置顶显示,但是实际上tv app的内容是显示在youtube下面。我们总共对比过Google自家的产品google Nexus player,google主导的Atom soundbar,以及TV公版,均是排序不满足置顶要求。
解决办法:向Google提bug,然后附上详细理由,最后Google同意waive,拿到waive id后让客户提供给Harman,附到测试报告中,最后让Google决定
举例2:
Youtube 付费视频最大只能播放到480P,无法选择4K
该问题是需要客户向Google申请专门的白名单.
举例3:
google cast无法连接成功,或者卡顿严重经常断开连接
cast功能主要是依赖Google白名单,如果无法连接,需要找Google排查下白名单是否添加成功,之前就遇到device name与其他产品相同,而Google没有检查出来
举例4:
YouTube付费视频可以达到1080P,但是Play Movie中只能到720P
我们测试发现在HD的屏并且OSD的buffer是720P时,play movie只能到720P,但是相同软件的OSD 720P的板子接1080P的屏,play movie确能到1080P,咨询Google回复这个是正常的行为,所以play movie的分辨率不只是和白名单有关,还受屏幕分辨率的影响!
二、GTVS自动化测试
该测试全部都是自动化测试,主要包含CTS, CTS veriry, GTS, VTS,Cts-on-gsi,sts。
需要注意的地方是:
1.测试网络
如果fail项中出现net等网络字样,可能与IPV6相关
2.waive id
3.测试手法
如果有些case全部测试无法pass,可以通过跑单例再次进行测试,harman实验室是支持单例的测试报告
4.BTS测试
BTS测试需要用out目录下编译生成的fastboot-falshall这个zip包,将这个zip包提供给Google,他们会进行一个安全性扫描,如果缺少合并关键性的security patch,则会出现fail项。