- 背景介绍
Android目前有一个比较明显的缺点是设备升级到新版本系统所要花费的时间太长(比如Android6.0到Android7.0的升级)。一般的情况下在有Google发布新版本的AOSP 之后,还需要SoC(System on Chip的缩写,称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。)产商对HAL(硬件抽象层是位于操作系统 内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。)进行升级,以及OEM产商对HAL和framework进行升级之后,用户才能在设备上收到OTA升级包的推送。低端一点的产品甚至在出厂后就不会再进行系统升级了。
为了解决这个问题,Google发起了Project Treble项目,而Project Treble中最重要的就是新增了Vendor Interface这一概念,以及相应的Vendor Test Suite(VTS)测试。
- VTS与CTS对比介绍
CTS作用:APP层跟Framework层在设计上是分开的,但通过CTS测试,确保了APP无Android Framework之间有一致的调用接口(API),这使得APP开发者编写的同一款程序可以运行在不同系统版本(向前兼容)、不同硬件平台、不同产商制造的不同设备上。
VTS作用:Project Treble 中引入 Vendor Interface 的目的是将 Android Framework 与 HAL 分开,通过对Vendor Interface进行测试,确保同一个版本的Android Framework可以运行在不同的HAL上,或者Android Framework可以运行在同一个HAL,即保证HAL的向前兼容性。通过这样的Framework/HAL分离设计和接口一致性保证,这就使得8.0版本之后的Android系统在进行升级时,可以直接对Framework进行升级而不用考虑HAL层的改动,从而缩短了用户手上设备得到系统升级OTA推送的时间。
Android8.0之后的新框架如下图所示:
采用新架构之后的Android系统升级过程则是直接对Framework进行替换,如下图所示:
三.VTS测试环境搭建
进行VTS测试,首先要搭建测试环境,需要以下这些组件:
JDK 1.8
SDK(ADB1.0.39)
Pip
Virtualenv
JDK 1.8的安装方法如下所示:
1.Android 8.0的VTS,GTS,CTS都用到的JDK均为1.8版本,可以在http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html中下载,我下载的是jdk-8u131-linux-x64.tar,下载后将这个压缩包拷入主目录下。
2、解压源码包
将下载到压缩包拷贝到java文件夹中,命令行:
进入jdk源码包所在目录
cp jdk-8u131-linux-x64.tar /opt
然后进入java目录,命令行:
cd /opt
解压压缩包,命令行:
sudo tar xvf jdk-8u131-linux-x64.tar
然后可以把压缩包删除,命令行:
sudo rm jdk-8u131-linux-x64.tar
3.接下来是设置全局变量:
这里使用的是全局设置方法,它是所有用户的共用的环境变量。
输入命令sudo gedit ~/.bashrc
输入该命令后会打开bashrc,如下图所示:
打开之后在末尾添加:
export JAVA_HOME=/opt/jdk1.8.0_131
(备注:这里是刚刚解压你下载好的JDK所在的路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
注意点:在上述添加的过程中,等号的两侧不要加入空格,不然会出现:“不是有效的标识符”,因为source/etc/profile不能识别多余的空格,会理解为路径的一部分。
4.检验是否安装成功
输入命令:
Java –version
看看是否成功,成功的话显示如下图所示:
SDK的安装方法如下所示:
- SDK压缩包文件较大大约7.1G不建议下载,可以找有linux系统的人拷过来,解压后将近25G,所以必须保证足够的内存,下载后将它拷入home目录下,解压。
- 添加环境变量,输入命令sudo gedit ~/.bashrc,进入bashrc,如下图所示:
打开之后在末尾添加:
export ANDROID_HOME=/opt/android-sdk-linux
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH
保存后运行 source ~/.bashrc
重启电脑。
VTS环境配置:
To set up a testing environment:
- Install Python development kit:
sudo apt-get install python-dev
- Install Protocol Buffer tools (for Python):
sudo apt-get install python-protobuf
sudo apt-get install protobuf-compiler
- Install Python virtual environment-related tools:
sudo apt-get install python-virtualenv
sudo apt-get install python-pip
四.VTS测试步骤
1.获取VTS测试工具,取出来之后解压后,将VTS File中的文件单独取出来,VTS的测试包就在VTS File中,解压VTS File中的文件。
2.解压之后,进入android-vts/tools/目录,执行以下命令即可进行默认的全局 VTS 测试:
$ vts-tradefed
> run vts
如果要对其中某个模块测试,命令如下:
$ vts-tradefed
> run vts -m VtsHalAudioV2_0Target
如果要对某个模块的某项测试,命令如下:
$ vts-tradefed
>run vts –m VtsHalAudioV2_Target –t
RecommendedOutputStreamConfigSupport
如果想知道更多的操作命令,输入help all即可看到更多的命令。
五.测试时间预估
一轮VTS的测试时间大概为6小时左右。
六.可能遇到的问题
Ubuntu可能会不识别Android 8.0版本的手机。解决方案:
- 先输入:
$ lsusb
这个命令的目的是查看手机的USB使用端口,需要记录下来后面需要使用的,id为12d1(基于华为的所有机器都是这个ID)
2.然后在命令行输入:
$ sudo vim /etc/udev/rules.d/70-androids.rules
打开后加入以下内容:
SUBSYSTEM=”usb”,ATTRSS{idVendor}=”12d1”,ATTRS{idproduct}==”103a”,MOOE=”0666”
其中idVendor idProduct指的是USB的ID,使用最开始的lsusb查询得到的结果。
###若转载,请注明出处,谢谢###