Android16 【GTS】 GtsDevicePolicyTestCases 测试存在Failed项

Android16 【GTS】 GtsDevicePolicyTestCases 测试存在Failed项

文章目录

一、前言

这里记录一个【GTS】 GtsDevicePolicyTestCases 测试Failed项。

从报错堆栈看是和输入法有关。

刚开始以为是更新了GMS输入法导致,后面发现是设置了其他默认输入法导致的Failed项。

二、分析解决

1、报错信息

如下图所示:

测试模块: GtsDevicePolicyTestCases

复制代码
测试项:
android.devicepolicy.gts.ManagedProfileProvisioningCrossProfileAppsTest#newlyProvisionedManagedProfile_unknownCrossProfileAppsAreNotPresent

报错堆栈信息:
java.lang.AssertionError: com.google.android.inputmethod.latin is pre-granted INTERACT_ACROSS_PROFILES and should not be
	at org.junit.Assert.fail(Assert.java:89)
	at android.devicepolicy.gts.ManagedProfileProvisioningCrossProfileAppsTest.assertNoUnknownCrossProfileApps(ManagedProfileProvisioningCrossProfileAppsTest.java:198)
	at android.devicepolicy.gts.ManagedProfileProvisioningCrossProfileAppsTest.newlyProvisionedManagedProfile_unknownCrossProfileAppsAreNotPresent(ManagedProfileProvisioningCrossProfileAppsTest.java:165)

2、分析

通过回退验证发现是和一个修改输入法的对策有关:

复制代码
(1)更新GMS release/vendor/partner_gms/apps/LatinImeGoogle 里面一系列apk

(2)设置默认输入法为android输入法
-    <string name=" def_input_method ">com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME</string>
+    <string name=" def_input_method ">com.android.inputmethod.pinyin/.PinyinIME</string>

 -   <string name="def_enabled_input_methods">com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME</string>
+    <string name="def_enabled_input_methods">com.android.inputmethod.pinyin/.PinyinIME</string>

查看报错信息是权限问题,一直以为是替换apk导致的;

但是查看新旧apk的AndroidManifest都是有定义 INTERACT_ACROSS_PROFILES 权限的;

替换成旧版apk还是有这个报错Failed项;

所以基本确定是第二个对策有关,第二个对策是把默认输入法 google输入法替换成了android pinyin 输入法;

为啥替换了默认输入法,会导致Failed项,这个也是我想不明白的。

可能是这个测试项是有切换用户的,有些配置不同输入法会有影响?

还有可能是系统的pinyin输入法加入了很多定制化修改,多用户切换后,返回的状态异常。

3、解决

手动 默认输入法为Gboard输入法后再测试该项就可以PASS。

4、其他

那可以不可以设置默认输入法就是Gboard,进行解决问题呢?

其实可以的,但是产品不要这个Google输入法为默认输入法,

因为新版本的Google输入法,点击输入框后,默认是左边显示一个悬浮图标,需要点击悬浮图标后才显示键盘;

这个需要用户多操作了一步,不清楚新板Google输入法为啥要这样做。

如果不更新Google输入法可以吗?

不可以,因为旧版本的SDK版本是34,也会报Failed项;

认证的所有apk必须要SDK35以上才行。

相关推荐
ltl2 小时前
内核追踪:ftrace、kprobe、uprobe、tracepoint 生产实战
linux
·薯条大王2 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
YB13755 小时前
jetpack compose 副作用 SideEffect
android·kotlin
小小、码农5 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
不会就选b6 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
CHB6 小时前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark【Android版】
android·ios·uni-app
圆奋奋7 小时前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos
带娃的IT创业者7 小时前
拆掉那堵墙:LibrePods 如何让 AirPods 在 Android 上重获新生
android·开源项目·airpods·librepods·生态解锁
沫璃染墨8 小时前
《从零入门Linux系统篇(十五):系统工具篇·六——GDB调试器详解:从程序执行控制到高级调试技巧》
linux·运维·服务器·c语言·c++
吃着火锅x唱着歌8 小时前
Effective C++ 学习笔记 条款40 明智而审慎地使用多重继承
c++·笔记·学习