CTS/GTS问题分析6 | weiinter105

遇到一个Android P相关的问题,和原来CTS/GTS 问题分析1的表现是一样的,但是将http://gerrit.pt.miui.com/#/c/387000/这个修复cp过来,发现不生效,仍然报错,因此记录一下

问题初探

测试命令: run gts -m GtsGmscoreHostTestCases -t com.google.android.gts.devicepolicy.managedprovisioning.DeviceOwnerProvisioningHostsideTest#testRequiredAppsInManagedDevice

报错堆栈:


 

上面还有:

09-28 01:54:32.486 18930 18956 D ManagedProvisioning: Deleting package [com.mi.android.globallauncher] as user 0

问题分析

可见,E10这个机器自定义的桌面被删掉了,导致case fail。在OverlayPackagesProvider.java中调试一下,结果如下:

可见我们得到的是vendor/google/products/gms_overlay下面的资源,那么首先怀疑的是不是和上面链接的一样,overlay顺序问题导致资源加载不正确?

那么我们在本地加log看一下:

在build/core/package_internal.mk中添加log

 

注意这个log不是在lunch时出现的,而是在packages/apps/ManagedProvisioning这里编译时出现的

国内版log

 

国际版

在根目录执行deploy

 

重新回到packages/apps/ManagedProvisioning进行mm

 

看着overlay的顺序完全正确,为了再确定下,我们用Android Studio看一下ManagedProvisioning.apk的资源,发现:

果然,资源已经顺利被aapt打包到相应apk里面了,前面的怀疑是错的,和原来不是一个问题。

那么剩下的还有两个怀疑点,1. apk的逻辑有问题或改动 2.资源加载出错;我们调试的时候发现加载的资源id是

和上面的id对不上,那么肯定是资源就没加载对。然后突然想到,我调试的时候attach的是system_process进程,那么会不会加载的是framework的资源呢,查看framework-res.apk,果然:

id对上了。那么可以肯定,是逻辑更改造成的问题

逻辑更改

http://cisys.pt.miui.com/opengrok/xref/v10-p-dipper-dev/packages/apps/ManagedProvisioning/src/com/android/managedprovisioning/task/nonrequiredapps/NonRequiredAppsLogic.java#120

 

可见,ManagedProvisioning将这部分逻辑放到了framework中,所以取的是framework的资源;

总结

ManagedProvisioning.apk也会随着大版本升级改动,我们进行CTS测试时需要注意这一点,尤其是其越来越与framework依赖时,我们要注意观察以往的overlay逻辑是否适用

作者: RESSRC

个人资源站

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据