VTS的全稱是 Vendor Test Suite(供應商測試套件)。html
爲什麼引入VTS測試?python
目前Android的系統升級是很麻煩的,爲了能更快的將設備升級到新的Android版本,Android O 開始新引入了 Project Treble,Project Treble 適用於搭載 Android O 及後續版本的全部新設備。android
Android 7.x 及更早版本中沒有正式的Vendor層接口,所以每次更新系統都相對耗時和困難:shell
treble_blog_before.png網絡
Android O 以後,Treble 提供了穩定的Vendor層接口,供設備製造商訪問 Android 代碼中特定於硬件的部分,這樣就能夠只更新框架層,減小升級系統帶來的成本和困難:框架
treble_blog_after.png工具
爲了確保Vendor層實現的前向兼容性,新的Vendor層接口會由供應商測試套件 (VTS) 進行驗證,該套件相似於兼容性測試套件 (CTS)。開發工具
VTS測試要求刷入谷歌提供AOSP的system.img (GSI)。在user版本中,若是直接使用flash tool單獨燒錄GSI時,會致使沒法開機。測試
之因此會出現這種問題,是因爲在user/userdebug版本中,dm-verity是使能的,替換GSI後致使dm-verity不能經過。 若是要解決這個問題,就須要進行unlock操做,而且要用fastboot來刷入刷入谷歌提供的system.img .ui
具體操做以下:
fastboot flashing unlock
和fastboot oem unlock
,fastboot flash system system.img
(須要根據軟件版本的信息來選擇GSI版本)6 .(Android P版本須要執行) fastboot flash vbmeta vbmeta.img
fastboot reboot
Running VTS
主機端設置
首先設置基本測試環境 GMS測試環境.
VTS測試環境配置:
安裝 Python 開發工具包:sudo apt-get install python-dev
安裝協議緩衝區工具(適用於 Python):sudo apt-get install python-protobuf protobuf-compiler
安裝 Python 虛擬環境相關工具:sudo apt-get install python-virtualenv python-pip
下載並解壓VTS測試工具
手機端設置
擦除設備上的用戶數據(即運行fastboot -w
)。
刷入谷歌提供的system.img (GSI),使用與設備的ABI相對應的GSI,是否支持A / B更新以及設備的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的設備不須要安裝SIM卡,可是Android P及更高版本的設備將須要SIM卡進行VTS測試。
確保手機能夠鏈接到IPV6的wifi網絡,若是設備具備GPS / Wi-Fi / Cellular功能,則必須重置設備並打開位置設置。
經過usb將手機鏈接到電腦上,經過 adb shell
來保證能夠正確的鏈接。
運行VTS測試
打開終端命令行
切換到android-vts路徑下
$ cd *installation-path*/android-vts/tools
經過下面的命令來進入到vts的控制檯
$ .vts-tradefed
運行vts的測試命令
> run vts
VTS經常使用命令
列出全部跑測結果
> l r
列出全部檢測到或已知的設備
> l d
單跑某一個模塊
> run vts -m <模塊名>
單跑某個測試項
> run vts -m <模塊名> -t <測試項名>
可用選項
> run vts -s <device_id> --logcat-on-failure --screenshot-on-failure --shard-count <shards>
'-s <device_id>':可指定運行測試的設備
'--logcat-on-failure':當測試失敗時捕獲logcat
'--screenshot-on-failure':當測試失敗時截取屏幕截圖
'--shard-count <shards>':用多個設備上同時跑測,可節省時間
help all
來查看: