1栏账、VTS簡(jiǎn)介
VTS的全稱(chēng)是 Vendor Test Suite(供應(yīng)商測(cè)試套件)兔港。
為何引入VTS測(cè)試比搭?
目前Android的系統(tǒng)升級(jí)是很麻煩的啥酱,為了能更快的將設(shè)備升級(jí)到新的Android版本爹凹,Android O 開(kāi)始新引入了 Project Treble,Project Treble 適用于搭載 Android O 及后續(xù)版本的所有新設(shè)備镶殷。
Android 7.x 及更早版本中沒(méi)有正式的Vendor層接口禾酱,因此每次更新系統(tǒng)都相對(duì)耗時(shí)和困難:
Android O 之后,Treble 提供了穩(wěn)定的Vendor層接口绘趋,供設(shè)備制造商訪(fǎng)問(wèn) Android 代碼中特定于硬件的部分颤陶,這樣就可以只更新框架層,減少升級(jí)系統(tǒng)帶來(lái)的成本和困難:
為了確保Vendor層實(shí)現(xiàn)的前向兼容性陷遮,新的Vendor層接口會(huì)由供應(yīng)商測(cè)試套件 (VTS) 進(jìn)行驗(yàn)證滓走,該套件類(lèi)似于兼容性測(cè)試套件 (CTS)。
2帽馋、VTS測(cè)試流程
1)替換谷歌system.img
VTS測(cè)試要求刷入谷歌提供AOSP的system.img (GSI)闲坎。在user版本中,如果直接使用flash tool單獨(dú)燒錄GSI時(shí)茬斧,會(huì)導(dǎo)致無(wú)法開(kāi)機(jī)腰懂。
之所以會(huì)出現(xiàn)這種問(wèn)題,是由于在user/userdebug版本中项秉,dm-verity是使能的绣溜,替換GSI后導(dǎo)致dm-verity不能通過(guò)。 如果要解決這個(gè)問(wèn)題娄蔼,就需要進(jìn)行unlock操作怖喻,并且要用fastboot來(lái)刷入刷入谷歌提供的system.img .
具體操作如下:
- 在設(shè)置中打開(kāi) OEM unlocking 選項(xiàng)
- 在設(shè)置中打開(kāi) USB debugging 選項(xiàng)
- 長(zhǎng)按音量 + 和電源鍵進(jìn)入fastboot模式
- 連接到電腦上底哗,分別執(zhí)行
fastboot flashing unlock
和fastboot oem unlock
,
執(zhí)行命令后需要選擇音量 + 來(lái)確認(rèn)unlock锚沸。
- 連接到電腦上底哗,分別執(zhí)行
- 執(zhí)行 fastboot 命令刷入google提供的 system.img (GSI):
fastboot flash system system.img
(需要根據(jù)軟件版本的信息來(lái)選擇GSI版本)
- 執(zhí)行 fastboot 命令刷入google提供的 system.img (GSI):
-
6 .(Android P版本需要執(zhí)行)
fastboot flash vbmeta vbmeta.img
- 重啟:
fastboot reboot
- 重啟:
2)VTS測(cè)試
Running VTS
主機(jī)端設(shè)置
首先設(shè)置基本測(cè)試環(huán)境 GMS測(cè)試環(huán)境.
VTS測(cè)試環(huán)境配置:
安裝 Python 開(kāi)發(fā)工具包:sudo apt-get install python-dev
安裝協(xié)議緩沖區(qū)工具(適用于 Python):sudo apt-get install python-protobuf protobuf-compiler
安裝 Python 虛擬環(huán)境相關(guān)工具:sudo apt-get install python-virtualenv python-pip
下載并解壓VTS測(cè)試工具
手機(jī)端設(shè)置
擦除設(shè)備上的用戶(hù)數(shù)據(jù)(即運(yùn)行
fastboot -w
)跋选。-
刷入谷歌提供的system.img (GSI),使用與設(shè)備的ABI相對(duì)應(yīng)的GSI哗蜈,是否支持A / B更新以及設(shè)備的security_patch_level:
ABI A/B Non A/B security_patch_level Arm64 aosp_arm64_ab aosp_arm64_a Uses the format: [year][month][date]
Arm32 aosp_arm_ab aosp_arm_a Uses the format: [year][month][date]
x86_64 aosp_x86_64_ab aosp_x86_64_a Uses the format: [year][month][date]
x86_32 aosp_x86_32_ab aosp_x86_32_a Uses the format: [year][month][date]
Android 8.x的設(shè)備不需要安裝SIM卡前标,但是Android P及更高版本的設(shè)備將需要SIM卡進(jìn)行VTS測(cè)試。
確保手機(jī)可以連接到IPV6的wifi網(wǎng)絡(luò)距潘,如果設(shè)備具有GPS / Wi-Fi / Cellular功能炼列,則必須重置設(shè)備并打開(kāi)位置設(shè)置。
通過(guò)usb將手機(jī)連接到電腦上音比,通過(guò)
adb shell
來(lái)保證可以正確的連接俭尖。
運(yùn)行VTS測(cè)試
打開(kāi)終端命令行
-
切換到android-vts路徑下
$ cd *installation-path*/android-vts/tools
-
通過(guò)下面的命令來(lái)進(jìn)入到vts的控制臺(tái)
$ .vts-tradefed
-
運(yùn)行vts的測(cè)試命令
> run vts
VTS常用命令
-
列出所有跑測(cè)結(jié)果
> l r
-
列出所有檢測(cè)到或已知的設(shè)備
> l d
-
單跑某一個(gè)模塊
> run vts -m <模塊名>
-
單跑某個(gè)測(cè)試項(xiàng)
> run vts -m <模塊名> -t <測(cè)試項(xiàng)名>
-
可用選項(xiàng)
> run vts -s <device_id> --logcat-on-failure --screenshot-on-failure --shard-count <shards>
'-s <device_id>':可指定運(yùn)行測(cè)試的設(shè)備
'--logcat-on-failure':當(dāng)測(cè)試失敗時(shí)捕獲logcat
'--screenshot-on-failure':當(dāng)測(cè)試失敗時(shí)截取屏幕截圖
'--shard-count <shards>':用多個(gè)設(shè)備上同時(shí)跑測(cè),可節(jié)省時(shí)間
- 更多的命令可通過(guò)
help all
來(lái)查看: