GTS GtsUnofficialApisUsageTestCases Failed

GTS 测试GtsUnofficialApisUsageTestCases失败如下:

junit.framework.AssertionFailedError: There are 102 violation(s)
com.google.android.gm / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.gm / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.gm / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.gm / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.dialer / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.dialer / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.dialer / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.photos / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.safetyhub / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.tachyon / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.tachyon / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.tachyon / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.tachyon / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.youtube.music / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.gms / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.gms / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.gms / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.gms / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.gms / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.gms / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.gms / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.gms / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.tts / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.tts / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.tts / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.tts / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.as / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.as / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.as / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.as / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.keep / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.keep / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.keep / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.keep / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.docs / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.docs / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.docs / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.docs / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.calendar / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.calendar / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.calendar / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.calendar / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.inputmethod.latin / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.inputmethod.latin / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.inputmethod.latin / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.inputmethod.latin / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.messaging / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.messaging / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.messaging / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.messaging / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.apps.maps / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.deskclock / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.deskclock / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.contacts / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.contacts / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.contacts / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.contacts / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.googlequicksearchbox / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.youtube / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.youtube / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.youtube / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.youtube / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.youtube / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.youtube / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.youtube / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.youtube / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKING
com.google.android.videos / Landroid/media/MediaRoute2Info$Builder;->setDeduplicationIds(Ljava/util/Set;)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.videos / Landroid/media/MediaRoute2Info$Builder;->setType(I)Landroid/media/MediaRoute2Info$Builder; / BLOCKED / LINKING
com.google.android.videos / Landroid/media/MediaRoute2Info;->getDeduplicationIds()Ljava/util/Set; / BLOCKED / LINKING
com.google.android.videos / Landroid/media/MediaRoute2Info;->getType()I / BLOCKED / LINKING
com.google.android.videos / Landroid/window/BackEvent;->getProgress()F / BLOCKED / LINKING
com.google.android.videos / Landroid/window/BackEvent;->getSwipeEdge()I / BLOCKED / LINKING
com.google.android.videos / Landroid/window/BackEvent;->getTouchX()F / BLOCKED / LINKING
com.google.android.videos / Landroid/window/BackEvent;->getTouchY()F / BLOCKED / LINKINGat junit.framework.Assert.fail(Assert.java:57)at junit.framework.TestCase.fail(TestCase.java:223)at com.android.gts.api.UnofficialApisUsageTest.testNonApiReferencesInProduct(UnofficialApisUsageTest.java:211)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at junit.framework.TestCase.runTest(TestCase.java:177)at junit.framework.TestCase.runBare(TestCase.java:142)at com.android.tradefed.testtype.DeviceTestResult$1.protect(DeviceTestResult.java:99)at com.android.tradefed.testtype.DeviceTestResult.runProtected(DeviceTestResult.java:73)at com.android.tradefed.testtype.DeviceTestResult.run(DeviceTestResult.java:104)at junit.framework.TestCase.run(TestCase.java:130)at com.android.tradefed.testtype.DeviceTestCase.run(DeviceTestCase.java:170)at com.android.tradefed.testtype.JUnitRunUtil.runTest(JUnitRunUtil.java:65)at com.android.tradefed.testtype.JUnitRunUtil.runTest(JUnitRunUtil.java:44)at com.android.tradefed.testtype.JUnitRunUtil.runTest(JUnitRunUtil.java:39)at com.android.tradefed.testtype.DeviceTestCase.run(DeviceTestCase.java:146)at com.android.tradefed.testtype.HostTest.runRemoteTest(HostTest.java:673)at com.android.tradefed.testtype.HostTest.runTestClasses(HostTest.java:581)at com.android.tradefed.testtype.HostTest.run(HostTest.java:564)at com.android.compatibility.common.tradefed.testtype.JarHostTest.run(JarHostTest.java:56)at com.android.tradefed.testtype.suite.GranularRetriableTestWrapper.intraModuleRun(GranularRetriableTestWrapper.java:366)at com.android.tradefed.testtype.suite.GranularRetriableTestWrapper.run(GranularRetriableTestWrapper.java:277)at com.android.tradefed.testtype.suite.ModuleDefinition.run(ModuleDefinition.java:581)at com.android.tradefed.testtype.suite.ITestSuite.runSingleModule(ITestSuite.java:912)at com.android.tradefed.testtype.suite.ITestSuite.run(ITestSuite.java:792)at com.android.tradefed.invoker.InvocationExecution.runTest(InvocationExecution.java:1335)at com.android.tradefed.invoker.InvocationExecution.runTests(InvocationExecution.java:1114)at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:604)at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:274)at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:1322)at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:629)

上述失败提示的app都是google的原生应用,例如com.google.android.youtube(YouTube)并且这些app都位于product目录下,我们可以反编译看下此测试项:

可以看到此测试项主要测试product目录下的app是否调用黑名单或者灰名单中的api,也就是非SDK接口管控名单内的api,名单如下:

Android P以后调用非 SDK(包括深灰名单、黑名单)接口的所有应用都将受到影响,Google提供的工具veridex 可以检测app是否调用了这些api,其内含有一个appcompat.sh ,我们可以看GTS也是使用该脚本

1:源码包含此工具,目录在:QSSI.13\art\tools\veridex\appcompat.sh
2:我们可以在QSSI.13 目录下编译此工具:make appcompat
3:我们就可以使用下面的命令行将其扫描内容输出到文件中
./appcompat.sh --dex-file=my_game.apk.apk >> out_put.txt
当然也可以加一个--imprecise参数,加这个参数是为了让输出内容更加详细
./appcompat.sh --dex-file=my_game.apk --imprecise >>  out_put.txt

截图所示为扫描出来的非SDK API,扫描出92个隐藏api,52个反射api,还有一些其他的,例如7个api的最大只支持到q的,当然不是说这些api都不能调用,GTS测试失败的过滤条件为:

也就是下图只有红款内的api会被视为不规范,下面的Linking unsupported 亦或者Reflection unsupported 都可以算正常。

当然还有一个判断:该项是读取GTS配置文件:GtsUnofficialApisUsageTestCases.dynamic内是否配置了额外的api, 如果没有配置,则该方法始终为false,则GTS的此项过滤条件可以不考虑该条件

但是我们发现这些原生的应用肯定是调用了这些api,并且我们没有源码,所以修改不了。也就是按照这个测试工具的判断方法,我们只有一个方法可以测过该项,那就是把这些应用移到别的目录,例如system_ext/app 或者system/app目录下。这个也是可以的,只不过工作量比较大。举例YuTuBe修改如下:

# YouTube
LOCAL_PATH := $(my-dir)
....
#LOCAL_PRIVILEGED_MODULE := true
#phoebe  add for move YuTuBe to system/app
#LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DPI_VARIANTS := xxhdpi xhdpi hdpi mdpi
LOCAL_DPI_FILE_STEM := YouTube_$(my_src_arch)_%.apk
LOCAL_SRC_FILES := YouTube_$(my_src_arch)_xxhdpi.apk
...

 ...

当然网上也有人说,在google play store里面更新这些app,是一样的效果,更新这些app以后,这些app的目录变为了data/data/xxx 这样,所以也算跳过此项了。

当然最终问题的原因为:

GTS 工具版本更新,从R4更新为R1,这个时候我们再测试,就会PASS了。主要原因是因为第三个判断方法返回true,则此GTS会跳过此项。

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

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

相关文章

一文彻底理解python浅拷贝和深拷贝

目录 一、必备知识二、基本概念三、列表,元组,集合,字符串,字典浅拷贝3.1 列表3.2 元组3.3 集合3.4 字符串3.5 字典3.6 特别注意可视化展示浅拷贝总结 四、列表,元组,集合,字符串,字…

OBS直播软件使用NDI协议输入输出

OBS(Open Broadcaster Software)是一个免费的开源的视频录制和视频推流软件。其功能强大并广泛使用在视频导播、录制及直播等领域。 OBS可以导入多种素材,除了本地音频、视频、图像外,还支持硬件采集设备,更能支持各种…

想入门网络安全,这些前置准备要做好!

网上有很多关于网络安全如何学习、如何入门的内容,但是仍然有很多小白不懂网络安全要怎么去学习。这是由于网络安全包含的范围确实比较广,学习的内容也比较多,所以在刚开始了解的时候确实会有点搞不清楚状况。 这里有一个方法,不要…

css:transform实现平移、旋转、缩放、倾斜元素

目录 文档语法示例旋转元素 transform-rotate旋转过渡旋转动画 参考文章 文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform 语法 /* Keyword values */ transform: none;/* Function values */ transform: matrix(1, 2, 3, 4, 5, 6); transform: translate…

车载电子电器架构 —— 基于AP定义车载HPC

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Mac 安装使用NPM及常用命令

环境: Mac 工具: NPM 可通过官网查询一些模块相关 NPM Doc 通过官网文档了解更多的关于NPM的使用 安装 NPM是Node.js的包管理工具,可用于解决 Node.js在代码部署上的问题。 新版本的Node.js已经集成了NPM, 因此可通过下载 Nod…

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

本文目录 前言Step 1 岸线数据Step 2 水深地形数据Step 3 其他数据及资料 前言 在利用MIKE建立水动力模型(详见【MIKE水动力笔记】系列)之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数…

竞赛 深度学习手势检测与识别算法 - opencv python

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

听GPT 讲Rust源代码--library/std(8)

题图来自Why is Rust programming language so popular?[1] File: rust/library/std/src/sys/sgx/abi/reloc.rs 在Rust源代码中,sgx/abi/reloc.rs文件的作用是定义了针对Intel Software Guard Extensions (SGX)的重定位相关结构和函数。 该文件中的Rela 结构定义了…

【机器学习】三、特征选择与稀疏学习

特征选择和稀疏学习 子集搜索与评价 对象都有很多属性来描述,属性也称为特征(feature),用于刻画对象的某一个特性。对一个学习任务而言,有些属性是关键有用的,而有些属性则可能不必要纳入训练数据。对当前学…

【C++项目】高并发内存池项目第八讲 项目总结和面试问题分享

项目总结面试分享 1.项目总结1.1优点1.2不足1.3面试常见问题 2.面试分享项目部分C语法部分 项目源代码:高并发内存池 1.项目总结 1.1优点 增加动态申请的效率减少陷入内核的次数减少系统内存碎片提升内存使用率尽量减少锁竞争应用于多核多线程场景 1.2不足 当前…

WindowsTerminal 配置标签页(快速使用PowerCli)

需求 避免每次都需要手动输入密码、手动填写信息才能访问vcenter。结合WindowsTerminal快速创建标签页,需要时一键开启Powercli。 解决 编写启动PowerCli的bat脚本 内容如下 echo off powershell -NoExit -ExecutionPolicy Bypass -Command "Connect-VISe…