sunwengang blog

developer | android display/graphics

  1. 1. Overview
    1. 1.1. 来源
    2. 1.2. 作用
  2. 2. 环境搭建
  3. 3. 测试前提GSI
    1. 3.1. GSI介绍
    2. 3.2. GSI方法
  4. 4. 测试命令(同CTS相似)

Overview

来源

为了能更快的将设备升级到新的Android版本,Android O 开始新引入了 Project Treble,Project Treble 适用于搭载 Android O 及后续版本的所有新设备。

(1) Android 7.x 及更早版本中没有正式的Vendor层接口,因此每次更新系统都相对耗时和困难:

(2) Android O 之后,Treble 提供了稳定的Vendor层接口,供设备制造商访问 Android 代码中特定于硬件的部分,这样就可以只更新框架层,减少升级系统带来的成本和困难:

作用

为了确保Vendor层实现的前向兼容性,新的Vendor层接口会由供应商测试套件 (VTS) 进行验证,该套件类似于兼容性测试套件 (CTS)。

通过 CTS 测试,确保了 APP 与 Android Framework 之间有一致的调用接口(API),这使得 APP 开发者编写的同一款程序可以运行在不同系统版本(向前兼容)、不同硬件平台、不同厂商制造的不同设备上。

VTS 类似 CTS,通过对 Vendor Interface 进行测试,确保同一个版本的 Android Framework 可以运行在不同 HAL 上,或不同 Android Framework 可以运行在 同一个 HAL 上。

通过这样的 Framework / HAL 分离设计和接口一致性保证,也使得 8.0 版本之后的 Android 系统在进行升级时,可以直接对 Framework 进行升级而不用考虑 HAL 层的改动,从而缩短了用户手上设备得到系统升级 OTA 推送的时间。

环境搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1) 安装 Python 开发包
$ sudo apt-get install python-dev

2) 安装 Protocol Buffer 工具(协议缓冲区工具)
$ sudo apt-get install python-protobuf
$ sudo apt-get install protobuf-compiler

3) 安装 Python 虚拟环境相关工具
$ sudo apt-get install python-virtualenv
$ sudo apt-get install python-pip

4) 在设备上启用开发者模式并打开 USB 调试功能

5) 测试的时候需要网络

测试前提GSI

GSI介绍

GSI是Google AOSP System Image的简称,在进行VTS测试之前,要使用user版本关闭verified boot后刷入GSI,VTS测试用的GSI由谷歌释放。

如VTS r6版本的GSI镜像:

GSI方法

1
2
3
4
5
6
7
GSI方法(先adb remount):
1)adb reboot bootloader 进入fastboot(或者音量键+电源键)
2)fastboot devices 查看识别设备
3)fastboot erase system_a 擦除分区(需要userDebug版本)
4)fastboot -w 擦除用户数据分区和缓存分区
5)fastboot flash system_a xxx.img 刷入img
6)fastboot reboot 重启
1
2
3
PS:在开发者选项查看oem unlocking选项是否已经解锁,如果未解锁可能是因为:
(1)不是userDebugg版本;
(2)可以通过执行fastboot flashing unlock和fastboot oem unlock,执行命令后需要选择音量 + 来确认unlock;

测试命令(同CTS相似)

  1. 启动vts(测试包从源码编译或者Google Android Developer官网查找)

    ./vts-tradefed

  2. 测试(跑测需要网络稳定)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    全局测:  		   run  vts
    模块测试: 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>':用多个设备上同时跑测,可节省时间
  3. 查看list命令

    1
    2
    3
    查看设备信息:		l  d
    查看命令信息: l c
    查看跑测结果: l r

本文作者 : sunwengang
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
本文链接 : https://alonealive.github.io/Blog/2019/07/15/2019/190715_debug_VTS/

本文最后更新于 天前,文中所描述的信息可能已发生改变