Google XTS 问题解决 | Android 设备认证

XTS介绍 

https://source.android.com/docs/compatibility/cts?hl=zh-cn

  • CTS (Compatibility Test Suite) : 兼容性测试套件,主要 google 为保证 Android 核心接口功能的 兼容性。
  • GTS ( google test suite ): Google 测试套件, gms 相关接口测试以及功能测试。
  • VTS (Vendor Test Suite) : 厂商测试套件,主要测试 HIDL 接口,保证 HIDL 接口的兼容性。

分析步骤

1、查看日志报错信息,定位模块。

JUnit(Java)测试用例会打印异常调用栈,分析在对应测试结果与日志目录下两个文件:

  • logs/2020.11.11_15.03.26/inv_xxx/host_log_xxx.txt
  • results/2020.11.11_15.03.26/test_result.xml 

2、查看测试套件包代码逻辑。

可用下面两种方法:

(1)查看源码

(2)反编译测试APK

  • 找到测试套件对应zip压缩包,如:Google_Test_Suite\GTS\10_R4(10_R4是版本号,目前最新有15R1)
  • 一般内置文件夹testcase有对应名称的APK,没有的话就找报错段所在的APK

常见问题

软件版本和测试问题

  • 检查是否缺少Mainline patch——软件版本带入Google Mainline Patch后复测
    • Go和常规版本的应用不同,需要确认应用版本类型,否则报错是指找不到APK,因此权限判断的时候fail。表面原因:应用给权限未Grant;根因:缺少Go APK。
  • 检查测试环境是否不满足——测试手法改善

开发代码缺陷

1、应用权限未grant

先确认是否集成了应用,若已集成则:

  • 若应用在google mainline,需要patch释放,而且要符合平台(Go或常规)。
  • 若应用是自研/三方,则需要APP内部开发解决。

2、功能断言fail(业务相关)

找到功能模块,确认检查项的内容,具体问题分析,非通用问题。

比如省电模式下检查网络相关状态(Android V):

com.android.cts.netpolicy.hostside.NetworkCallbackTest#testOnBlockedStatusChanged_powerSaver:
java.lang.AssertionError: expected:<false> but was:<true>
    at org.junit.Assert.fail(Assert.java:89)
    at org.junit.Assert.failNotEquals(Assert.java:835)
    at org.junit.Assert.assertEquals(Assert.java:120)
    at org.junit.Assert.assertEquals(Assert.java:146)
    at com.android.cts.netpolicy.hostside.NetworkCallbackTest$TestNetworkCallback.expectBlockedStatusCallbackEventually(NetworkCallbackTest.java:178)
    at com.android.cts.netpolicy.hostside.NetworkCallbackTest.testOnBlockedStatusChanged_powerSaver(NetworkCallbackTest.java:342)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch pnnx repvit模型转换

先把模型转到libtorch #!/usr/bin/env python3 # -*- coding:utf-8 -*- import argparse import time import sys import os import torch import torch.nn as nn import torch.backends.cudnn as cudnn from timm.models import create_model import time import modelinput_…

Django权限系统如何使用?

Django的权限系统是一个强大而灵活的特性,允许你控制不同用户对应用程序中资源的访问。以下是使用Django权限系统的几个基本步骤: 1. 定义模型权限 在你的models.py文件中,你可以为每个模型定义自定义权限。这通过在模型的Meta类里设置perm…

Simulink中示波器连续运行的方法

1.在Simulink中,经常要使用到示波器,默认示波器是定时运行的,只能观察到一小部分运行的波形;实际调试过程中,经常要连续运行,因此,需要设置示波器为连续运行模式,下面将介绍示波器连续运行的方法。 打开Simulink仿真软件,找到仿真设置按钮,点击设置: 2.将其停止时间…

实现一个优雅的 jsBridge 方案

实现一个优雅的 jsBridge 方案 在 iOS 项目中,有时需要实现 JavaScript 和 Native 代码之间的通信。本文介绍一种优雅的 jsBridge 实现方案,支持互相调用和回调机制,并附带详细的代码和注释。 步骤 1: 定义桥接协议 首先,定义一…

音频流格式启用数据流

音频流格式启用数据流 音频流格式启用数据流使用 AudioStreamBasicDescription 结构在哪里以及如何设置流格式 音频流格式启用数据流 在单个样本帧级别处理音频数据时,就像使用音频单元一样,仅仅指定正确的数据类型来表示音频是不够的。单个音频样本值中…

Vuetify3:Vuetify3 + Nuxt3时 tabs 跳转页面

在一开始没去看vuetify3的文档直接使用了nuxt3跳转方式 <template><v-tabs><NuxtLink :to"/yourRouter"><v-tab to"/tab1">Tab 1</v-tab></NuxtLink><v-tab to"/tab2"><NuxtLink :to"/yourR…

升级confluence中的内嵌tomcat

步骤&#xff1a; 1、下载新版本tomcat 下载地址&#xff1a;https://tomcat.apache.org/download-90.cgi 2、关闭confluence 进入confluence的bin目录&#xff0c;执行./stop-confluence.sh 3、备份confluence 在对应目录下&#xff0c;执行 cp ./confluence -r ./conflu…

HandlerMethodArgumentResolver :深入spring mvc参数解析机制

❃博主首页 &#xff1a; <码到三十五> ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a; 搬的每块砖&#xff0c;皆为峰峦之基&#xff1b;公众号搜索(码到三十…

编程新纪元:AI辅助工具豆包Marscode体验

自从ChatGPT带动全球AI热潮&#xff0c;AI席卷着各行各业。编程界也不例外&#xff0c;早期做过了Github Copilot、阿里的通义灵码等AI编程插件的体验 p.s.以上的下载量与评分均只是plugins.jetbrains的marketplace数据&#xff0c;仅供参考 基本AI编程工具的功能都差不多&…

目标检测中的mAP计算:深入解析与实践指南

目标检测中的mAP计算&#xff1a;深入解析与实践指南 在目标检测任务中&#xff0c;评估模型性能是一个复杂的过程&#xff0c;因为需要同时考虑检测的准确性和召回率。平均精度均值&#xff08;mean Average Precision&#xff0c;简称mAP&#xff09;是一个广泛使用的评估指…

自然语言处理学习(3)RNN 模型学习---NLP领域的第一个模型

一 基本定义 视频链接 1.小案例理解–语义理解 目的&#xff1a;输入一句话&#xff0c;机器需要理解这句话的语义 二. RNN模型分类 1. 按照输入输出分类 (1) N Vs N (2) N Vs 1 (3) 1 VsN (4) seq2seq 三 传统RNN模型 1. 内部结构分析 &#xff08;a) 总体外…

基于单片机的多功能电子时钟的设计

摘要&#xff1a;提出了一种基于单片机的多功能电子时钟的设计方法&#xff0c;以 AT89C52单片机作为系统的主控芯片&#xff0c;采用DS1302作为时钟控制芯片&#xff0c;实现日期时钟显示并且提供精准定时的功能。此外&#xff0c;还可经由DHT22所构成的温湿度传感电路&#x…

Kafka集群部署(手把手部署图文详细版)

1.1.1 部署zookpeer 在node02下载并解压zookeeper软件包 cd /usr/local wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 或者&#xff1a;scp cat192.168.28.100:/home/cat/zookeeper-3.4.6.tar.gz /tmp&#xff08;注意目录&#xf…

vue属性绑定v-bind

属性绑定v-bind 双大括号不能在HTML attributes 中使用。想要响应式地绑定一个attribute&#xff0c;应该使用v-bind指令。 v-bind 指令指示Vue将元素id attribute 与组件的dyid属性保持一致。如果绑定值是null或者undefined&#xff0c;那么该attribute将会从渲染的元素上移…

昇思第9天

LSTMCRF序列标注 序列标注&#xff1a;对序列进行标注&#xff0c;实际上是对序列中每个Token进行标签预测&#xff0c;可以直接视作简单的多分类问题。但是序列标注不仅仅需要对单个Token进行分类预测&#xff0c;同时相邻Token直接有关联关系&#xff0c;需要引入一种能够学…

docker介绍与详细安装

1 docker 介绍 1.1 虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实…

c++【入门】交换数值

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 我们现在要做一个非常简单的题目&#xff0c;实现一个完整的程序。 当它运行起来后&#xff0c;我们希望通过键盘输入两个整数&#xff0c;我们先把它们称为 a 和 b。然后把他们之间的值进行交换并输出。 输入 输入两个数字…

【BUUCTF-PWN】12-get_started_3dsctf_2016

32位&#xff0c;开启了NX保护 执行效果&#xff1a; main函数&#xff1a; 其中gets()函数存在栈溢出&#xff0c;溢出距离为0x38&#xff0c;这里是使用的esp寻址&#xff0c;属于外平栈&#xff0c;不需要覆盖ebp的四个字节。而之前做的题一般都是ebp寻址&#xff0c;…

开发国际短剧系统的策略解析

一、明确项目目标和需求 1、功能需求&#xff1a;确定系统应具备的基本功能&#xff0c;如用户注册、登录、浏览短剧、评论、分享、个性化推荐等。 2、性能需求&#xff1a;确保系统能够承受高并发访问&#xff0c;保证视频流畅播放&#xff0c;减少卡顿和延迟。 3、跨文化传播…

MCU中如何利用串口通信,增加AT指令框架

第一步&#xff0c;通过串口与PC端建立通信第二步&#xff0c;根据PC端发来的AT指令&#xff0c;MCU执行相应代码 主要是解析PC端发来的字符串&#xff0c;也就是获取字符串、处理字符串、以及分析字符串。 1. 串口通信 用到的是DMA串口通信&#xff0c;收发字符串数据时&…