CTS camera的基础操作和debug
手机端
设置永久不锁屏
1 CTS
进入cts目录tools
运行以下命令
./cts-tradefed
adb devices找设备数串
整跑
run cts -m CtsCameraTestCases --skip-preconditions
run cts -m CtsMediaTestCases
单测格式如下 -t 后面是单跑的内容
run cts -m CtsCameraTestCases -t android.hardware.camera2.cts.StillCaptureTest#testAeCompensation --skip-preconditions
查看设备状态
l d
查看报告状态
l r
查看当前命令
l c
打开报告
nautilus ./
run retry --retry <session-number>
重跑(注意:重跑需要同一个机子同一个版本)
run retry --retry session
run retry --retry 0
以上的是在环境中跑cts.
cts 的本质是下载测试的apk到手机中(在谷歌释放包中CtsCameraTest.apk),这个apk集成了测试相关的内容来调用手机的一些功能完成测试项目
以下命令在终端运行即可,替换成你需要跑的单项和abi
adb shell am instrument -e android.hardware.camera2.cts.CameraDeviceTest#testSessionParametersStateLeak --abi arm64-v8a -w android.camera.cts/androidx.
2 VTS(需要镜像)
vts 需要python 相关的环境包配置,相关命令如下:
sudo apt-get install python-dev
sudo apt-get install python-protobuf
sudo apt-get install protobuf-compiler
sudo apt-get install python-virtualenv
sudo apt-get install python-pip
sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib
sudo apt-get install python-opencv
2.1进入fastbootd模式
adb unroot
adb reboot fastboot #进入这个模式刷system.img,bootloader模式没有这个分区
2.2 system.img
刷入谷歌 system.img
fastboot flash system system.img
查看gsi版本日期
strings system.img | grep ro.build.version.security_patch
adb shell getprop ro.build.version.security_patch
重新进入fastboot
fastboot reboot bootloader
fastboot -w
2.3 boot-debug.img
vts需要debug的权限,所以需要刷debug的镜像,另外fastboot 的版本不能太旧,太久分区不对,刷system.img会破坏分区,导致无限重启无法进去到系统里面进去.
fastboot flash boot boot-debug.img
fastboot -w
fastboot reboot
2.4 手机配置
进入设置打开开发者模式,usb调试模式,不锁定屏幕,语言设置成英语(这个语言无所谓)
2.5 命令
需要连接外网(电脑)
./vts-tradefed
VTS camera 相关的三个模块
run vts -m VtsHalCameraProviderV2_4Target --skip-preconditions
run vts -m VtsHalCameraProviderV2_5Target --skip-preconditions
run vts -m VtsHalCameraServiceV2_0Target --skip-preconditions
单跑
run vts --include-filter VtsHalCameraProviderV2_4Target --include-filter VtsHalCameraProviderV2_5Target --include-filter VtsHalCameraServiceV2_0Target --include-filter VtsVndkDependency -s xxx;
单跑命令
run vts -m xxx -t xxx -s xxx
run vts -s
vts常用命令
列出所有的跑测结果
l r
列出所有渐层到或已知的设备
l d
列出当前运行的模块内容
l i
单跑某个模块
run vts -m <模块>
可用选项
run vts -s <device_id> --logcat-on-failure --screenshot-on-failure --shard-count <shards>
3 ITS
its以来python环境(不建议使用ubuntu20测试,默认python包可能太新,跑不起来)
3.1 环境包
sudo apt install python-numpy
sudo apt install python-scipy
sudo apt install python-matplotlib
sudo apt install python-opencv
3.2 手机端
手机需要安装CtsVerifier.apk
adb install CtsVerifier.apk
进入到手机apk,所有的权限都打开,选择its测试项目

然后选择测试的场景和摄像头

3.3 电脑端
进入到对应的tools目录下
android-cts-verifier/CameraITS
source ./build/envsetup.sh
整跑命令
python tools/run_all_tests.py device=017650f70401 camera=0 scenes=1
单跑命令
python ./tests/xxx/xxx.py camera=x(执行tests目录下的对应scenes的报错项)。
python tools/run_all_tests.py camera=0 scenes=1
3.4 场景说明
| 场景 | 说明 |
|---|---|
| 场景0 | 无任何要求 |
| 场景1 | 相机位于三脚架上, 指向一个静态场景, 其中包含灰色卡和白色背景, 在恒定 (稳定) 相对明亮的光照源下。这是 CTS 验证程序物理设置上面描述的场景。镜头视野中,灰卡大致放在中间,周围为白色背景 |
| 场景 2 | 这是测试人脸检测的场景。相机位于三脚架上, 指向一张包含3人脸的静态图片, 在恒定 (稳定) 相对明亮的照明光源下。 |
| 场景3 | 这是测试图像清晰度的场景。相机位于三脚架上, 指向包含某些边缘的静态图片, 如打印的 ISO 12233 图表。现场应在一个恒定 (稳定) 相对明亮的照明源。 |
| 场景4 | 这是测试纵横比的场景。相机位于三脚架上, 指向一个静态测试页, 其中包含一个黑色圆圈和一个方块。现场应在一个恒定 (稳定) 相对明亮的照明源 |
| 场景5 | 这是测试镜头着色和颜色均匀性的场景。在摄像机前放置一个扩散器。相机位于三脚架上,指向恒定的 (稳定) 相对地明亮的照明源。 |
我们这边就用的一张白色餐巾纸代替了扩散器,将镜头对着光源,用餐巾纸挡住镜头即可。(很好使,反正不用钱)场景的具体说明看its的官方文档
3.5 创建报告
单跑是空的,显示在终端上。暂不创建报告
adb shell
appops set com.android.cts.verifier android:read_device_identifiers allow
exit
adb pull /storage/emulated/0/verifierReports ~/桌面/
4 GTS
进入到tool目录下,手机电脑需要挂VPN
run gts -m GtsCameraTestCases -s xxx
run gts -m GtsCameraTestCases -s 008bcdcf0405
5 STS
安全补丁包测试以后再说
6 GSI
需要烧录谷歌镜像
进入fastboot模式
adb reboot fastboot
刷入对应的谷歌镜像system.img
fastboot flash system system.img
fastboot reboot bootloader
fastboot -w
fastboot oem unlock
adb reboot bootloader
fastboot reboot
打开开发者选项,打开stay awake和USB debugging
进入vts目录,运行 ./vts-tradefed
全跑
run cts-on-gsi -m CtsCameraTestCases
单跑
run cts-on-gsi --include-filter CtsCameraApi25TestCases --include-filter CtsCameraTestCases -s xxx
run cts-on-gsi -m CtsCameraTestCases -t xxx
run cts-on-gsi -o
CTS camera的基础操作和debug的更多相关文章
- 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键
1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...
- 笔记-flask基础操作
笔记-flask基础操作 1. 前言 本文为flask基础学习及操作笔记,主要内容为flask基础操作及相关代码. 2. 开发环境配置 2.1. 编译环境准备 安装相关Lib ...
- python基础操作以及hdfs操作
目录 前言 基础操作 hdfs操作 总结 一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【Learning Python】【第二章】Python基础类型和基础操作
基础类型: 整型: py 3.0解决了整数溢出的问题,意味着整型不必考虑32位,64位,有无符号等问题,你写一个1亿亿亿,就是1亿亿亿,不会溢出 a = 10 ** 240 print(a) 执行以上 ...
- Emacs学习心得之 基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...
- Git基础操作
配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...
- activiti基础操作
package activitiTest; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInp ...
- 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》
注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作 第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...
随机推荐
- Codeforces Round #669 (Div. 2) B. Big Vova (枚举)
题意:有一个长度为\(n\)的序列,你需要对其重新排序,构造一个新数组\(c\),\(c_{i}=gcd(a_{1},...,a{i})\)并且使得\(c\)的字典序最小. 题解:直接跑\(n\)次, ...
- leetcode 周赛 205 1576-5508-5509-5510
第四题比较难,看题解用并查集做比较简单,但是我觉得难度在想到用并查集,可能是最近做题少所以想不到吧. 1 替换所有的问号 class Solution { public: string modifyS ...
- 一句话木马的简单例子 网站webshell & 远程连接
一 概述 本地 kail linux 目标 windows nt 服务器 二 过程 首先编写一句话木马 index.php 一句话木马的原理就是把C=xxx 字符串当成php语句执行 注意这里用 ...
- 牛客网多校第5场 I vcd 【树状数组+离散化处理】【非原创】
题目:戳这里 学习博客:戳这里 作者:阿狸是狐狸啦 n个点,一个点集S是好的,当且仅当对于他的每个子集T,存在一个右边无限延长的矩形,使的这个矩形包含了T,但是和S-T没有交集. 求有多少个这种集合. ...
- leetcode10 正则表达式匹配 dp
刚好最近在学编译原理 有点想按照语法分析写..不过用不着 因为知道正则表达式对一个串可能有多种匹配方法,所以要准备好回溯. 有最优子结构,一段s由一段p生成,于是dp. 常规思路是从前开始逐个字符匹配 ...
- 线程同步之信号量(sem_init,sem_post,sem_wait)
信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区. 不多做解释,要使用信号量同步,需要包含头文件semaphore.h. 主要用到的函数: int ...
- springboot demo(一)快速开始
快速入门 maven构建项目 1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本2.26以及一些工程基本信息,点击" ...
- Flow All In One
Flow All In One Flow is a static type checker for JavaScript https://github.com/facebook/flow https: ...
- Android 如何使用 WebView 加载 HTML 字符串和处理转译字符
Android 如何使用 WebView 加载 HTML 字符串和处理转译字符 css bug 在 WebView 中编译 Web 应用 如果您希望在客户端应用中提供 Web 应用(或只是网页),则可 ...
- js useful skills blogs
js useful skills blogs blogs https://davidwalsh.name/tutorials/javascript https://www.ruanyifeng.com ...