【问题描述】

工具:Cts-Verifier-9.0-R11.apk

测试Camera ITS Test时,点击该测试项后verifier apk闪退。重新打开后该项未pass变绿。

【问题结论】

AuthBlog:秋城https://www.cnblogs.com/houser0323

最新结论:是waiver项。

拿到了Google-waiver id:https://partnerissuetracker.corp.google.com/issues/150153190

怀疑verifier工具问题

r8工具没问题,r11有问题。

r11工具在送测成功的盒子也有问题。

【分析详细】

1.crash日志:

03-04 14:34:36.977  8091  8091 D AndroidRuntime: Shutting down VM
--------- beginning of crash
03-04 14:34:36.987 8091 8091 E AndroidRuntime: FATAL EXCEPTION: main
03-04 14:34:36.987 8091 8091 E AndroidRuntime: Process: com.android.cts.verifier, PID: 8091
03-04 14:34:36.987 8091 8091 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.cts.verifier/com.android.cts.verifier.camera.its.ItsTestActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.cts.verifier.TestListAdapter.getCount()' on a null object reference
。。。。。。
03-04 14:34:36.987 8091 8091 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.cts.verifier.TestListAdapter.getCount()' on a null object reference
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at com.android.cts.verifier.PassFailButtons$TestListActivity.getHistoryCollection(PassFailButtons.java:294)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at com.android.cts.verifier.PassFailButtons$TestListActivity.setTestResultAndFinish(PassFailButtons.java:282)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at com.android.cts.verifier.camera.its.ItsTestActivity.onCreate(ItsTestActivity.java:347)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7144)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:7135)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894)
03-04 14:34:36.987 8091 8091 E AndroidRuntime: ... 11 more
03-04 14:34:37.000 3184 4971 W ActivityManager: Force finishing activity com.android.cts.verifier/.camera.its.ItsTestActivity
03-04 14:34:37.003 3184 4971 W ActivityManager: Force finishing activity com.android.cts.verifier/.CtsVerifierActivity
03-04 14:34:37.009 2988 3123 W libc : Unable to set property "sys.vsync.type" to "": error code: 0x18
03-04 14:34:37.010 8091 8091 I Process : Sending signal. PID: 8091 SIG: 9

2.比较追溯源码

经对比,r8不会crash。r8工具与r11工具的代码有差异,新增了一个函数调用getHistoryCollection()

camera/its/ItsTestActivity.java +347
342 if (mToBeTestedCameraIds.size() == 0) {
343 showToast(R.string.all_exempted_devices);
344 ItsTestActivity.this.getReportLog().setSummary(
345 "PASS: all cameras on this device are exempted from ITS"
346 , 1.0, ResultType.NEUTRAL, ResultUnit.NONE);//该语句表明测试已经pass。crash出现在下一句,与测试逻辑无关,是apk自身代码有问题。
347 setTestResultAndFinish(true);//
348 } =============================================
ItsTestActivity.java:347
@@ -171,25 +160,19 @@
@Override
public void setTestResultAndFinish(boolean passed) {
PassFailButtons.setTestResultAndFinishHelper(
+ this, getTestId(), getTestDetails(), passed, getReportLog(),
+ getHistoryCollection());//增加了最后一个参数,是函数的调用返回值。
- this, getTestId(), getTestDetails(), passed, getReportLog());
} =============================================
PassFailButtons.java:294
288 /**
289 * Get existing test history to aggregate.
290 */
291 @Override
292 public TestResultHistoryCollection getHistoryCollection() {
293 List<TestResultHistoryCollection> histories =
294 IntStream.range(0, mAdapter.getCount())//由于mAdapter是null,所以空指针异常crash了。
295 .mapToObj(mAdapter::getHistoryCollection)
296 .collect(Collectors.toList());

如上294,测试apk的代码有问题,所以空指针异常crash了。

[Cts-Verifier]waiver-Camera-ITS-Test的更多相关文章

  1. Android N和O中使用adb shell dpm set-device-owner 'com.android.cts.verifier/com.android.cts.verifier.managedprovisioning.DeviceAdminTestReceiver' setup Device Owner失败

    PC端出现如下log: D:\workspace\AndroidO\CTS\CTS_Verifier>adb shell dpm set-device-owner 'com.android.ct ...

  2. CTS camera的基础操作和debug

    手机端 设置永久不锁屏 1 CTS 进入cts目录tools 运行以下命令 ./cts-tradefed adb devices找设备数串 整跑 run cts -m CtsCameraTestCas ...

  3. 【转】Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析

    原文网址:http://www.cnblogs.com/zh-ya-jing/p/4452675.html CTS Verifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测 ...

  4. 简析Android 兼容性测试框架CTS使用

    一.什么是兼容性测试? 1)为用户提供最好的用户体验,让更多高质量的APP可以顺利的运行在此平台上 2)让程序员能为此平台写更多的高质量的应用程序 3)可以更好的利用Android应用市场 二.CTS ...

  5. Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析

    CTS Verifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测试的功能,比如相机.传感器等.由于硬件配置或其他原因,不同手机上部分测试项目被隐藏,也就是说CTS Veri ...

  6. android 兼容性测试 CTS 测试过程(实践测试验证通过)

    source: http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明 ...

  7. 监听Android CTS测试项解决方案(二)

    二,监听当前测试项是否是Accelerometer Measurement Test测试项 通过第一种方式介绍的,我们可以得到当前处于活动状态的Activity类似监听CTS测试当前的测试项.但是由于 ...

  8. 监听Android CTS测试项解决方案(一)

    前言: 首先这里需要详细叙述一下标题中"监听Android CTS测试项解决方案"的需求.这里的需求是指我们需要精确的监听到当前CTS测试正在测试的测试项. 因为我们知道CTS认证 ...

  9. 【转】android 兼容性测试 CTS 测试过程(实践测试验证通过)

    原文网址:http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方 ...

  10. Android CTS(frome google)

    Compatibility Test Suite How does the CTS work? The Compatibility Test Suite (CTS) is a free, commer ...

随机推荐

  1. yum的repo文件详解、以及epel简介、yum源的更换、常用yum命令

    https://www.cnblogs.com/nineep/p/6795692.html       yum的repo文件详解.以及epel简介.yum源的更换 常用命令如下: yum list  ...

  2. Perl:正则中问号的四周用途:1.字面意义的问号 2. 量词 3. 表示非贪心的修饰符 4.用以表示不具有记忆功能的圆括号

    Perl:正则中问号的四周用途:1.字面意义的问号  2. 量词   3. 表示非贪心的修饰符  4.用以表示不具有记忆功能的圆括号 非贪心:在量词后面加?即可

  3. day17-反射

    #反射最常用的两个方法:hasattr getattr # 1. 反射对象属性,反射对象方法: class Goods: def __init__(self,name): self.name = na ...

  4. LeetCode No.70,71,72

    No.70 ClimbStairs 爬楼梯 题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. ...

  5. 学习python-20191108(2)REST接口相关

    一.客户登录验证 在使用接口前,需要对客户进行登录验证 enums.py文件代码: #定义枚举,客户端登录的方式有很多种形式:邮箱登录.手机登录.微信小程序登录.微信公众号登录 class Clien ...

  6. resent|aspiration|deficiency|diagnosed|distract|emphasize

    VERB 怨恨;憎恶;愤恨If you resent someone or something, you feel bitter and angry about them. She resents h ...

  7. Django ORM单表查询必会13条

    必知必会13条 操作下面的操作之前,我们实现创建好了数据表,这里主要演示下面的操作,不再细讲创建准备过程 <1> all(): 查询所有结果 <2> filter(**kwar ...

  8. Redis 事物、悲观、乐观锁 (详细)

    1,概论 事物这东西相信大家都不陌生吧,在学习Spring,Mybatis等框架中, 只要是涉及到数据存储和修改的,都会有事物的存在, 废话就不多说了下面我们来简单的介绍下Redis事物以及锁. 2, ...

  9. printf 输出浮点数

    在测试printf函数输出结果时,写了如下代码: /** * printf:格式化输出函数 * printf函数不会按照格式控制而对数据类型进行转换,不管三七二十一, * 抓到二进制数据就按照格式控制 ...

  10. fiddler模拟返回响应数据

    通过find查找修改指定内容 选择find a file 保存后重新发起请求