GTS GtsUnofficialApisUsageTestCases Failed

2023-10-31 20:44

本文主要是介绍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会跳过此项。

这篇关于GTS GtsUnofficialApisUsageTestCases Failed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/318015

相关文章

android java.io.IOException: open failed: ENOENT (No such file or directory)-api23+权限受权

问题描述 在安卓上,清单明明已经受权了读写文件权限,但偏偏就是创建不了目录和文件 调用mkdirs()总是返回false. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_E

UserWarning: mkl-service package failed to import

安装完成anaconda,并设置了两个环境变量  之后再控制台运行python环境,输入import numpy as np,提示错误 D:\InstallFolder\Anaconda3\lib\site-packages\numpy\__init__.py:143: UserWarning: mkl-service package failed to import, therefore

Python安装llama库出错“metadata-generation-failed”

Python安装llama库出错“metadata-generation-failed” 1. 安装llama库时出错2. 定位问题1. 去官网下载llama包 2.修改配置文件2.1 解压文件2.2 修改配置文件 3. 本地安装文件 1. 安装llama库时出错 2. 定位问题 根据查到的资料,发现时llama包中的execfile函数已经被下线了,需要我们手动修改代码后

Typora配置PicGo时,提示Failed to fetch

Typora配置PicGo时,提示Failed to fetch 两者配置的端口不一致造成的 打开Typora,选择文件-偏好设置-图像-验证图片上传选项,点击验证图片上传选项 会提示错误:Failed to fetch,此时可以发现typora中设置的上传端口为36677 打开PigGo,选择PicGo设置-设置server,会发现监听端口为36678 修改监听接口为366

Tomcat启动报错:transport error 202: bind failed: Address already in use

Tomcat启动报错:transport error 202: bind failed: Address already in use 了,上网查找了下面这篇文章。也是一种解决办法。 下文来自:http://blog.csdn.net/sam031503/article/details/7037033 tomcat 启动日志报出以下错误:  ERROR: transport err

SpringBoot启动报错Failed to determine a suitable driver class

两种解决办法 1.在Application类上加 ` @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) package com.example.demo3;import org.springframework.boot.SpringApplication;import org.springframewo

Failed to pull selection解决办法

今天在使用DDMS导出文档到PC端的时候,明明在file explorer里面有文件,导出时候就是失败,出现了“Failed to pull selection”错误。百度了一下,还是重启Eclipse最靠谱。

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

王立平--Failed to push selection: Read-only file system

往android模拟器导入资源,失败。提示:只读文件、 mnt是只读文件。应点击sdcard,,在导入

兔子--Android Studio出现错误:Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.pro

重点在:finished with non-zero exit value 2. 这里表明了有重复的内容存在。 由于:Android Studio中引入包的方式有如下2种:    compile 'com.android.support:support-v4:22.0.0'    compile files('libs/support-v