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. 基於Amlogic的openlinux release的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 可以設置收藏應用行的現成順序,用戶以後可以移動、收藏或取消收藏這些應用。
- Google 保留槽位 5 (YouTube) 和 6(Play 影視)。有關更多詳情,請參閱 GTVS 要求。
- 最多現成放置了 8 個應用(包括 YouTube 和 Play 影視,必須放置這兩個應用)。
- 建議將 Live TV 應用放置在第一個槽位中。
圖 3. 收藏應用排序要求
應用視圖
通過“應用”圖標、可選的遙控器按鈕或長按主屏幕鍵即可打開應用視圖。應用視圖包含:
- 推廣橫幅 - 由 Google Play 控制
- “所有應用”網格
- 可選的 OEM 推薦行
- 單獨的“遊戲”網格
圖 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開機嚮導(非認證需求)
在CTV 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配置即可
<!-- 是否允許用戶跳過默認的網絡設置步驟。--> <bool name="show_skip_network"></bool>
<!-- 是否允許用戶跳過 Google 帳號登錄步驟。--> <bool name="show_skip_signin"></bool>
三、白名單
項目開發過程中需要用到的白名單如下:
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項。