修改tips:
1、查看CTS测试代码中使用hasSystemFeature判断是否有系统feature,如果没有return(不进行后面的测试)如果刚好设备没有这个feature,可以把这个feature移除掉,这样CTS就不会对这个feature进行测试,即可pass。
2、CTS测试开始会安装相应的进程包,测试结束就会卸载这个包。可以通过接收广播来进行相应的操作。代码如下:
String currentPackage = intent.getData().getSchemeSpecificPart();//被安装/卸载的包名
switch (action) {
case Intent.ACTION_PACKAGE_ADDED:
if ("".equals(currentPackage)) {
//判断CTS正在运行的时候,做相应的处理
}
break;
case Intent.ACTION_PACKAGE_REMOVED:
if ("".equals(currentPackage)) {
//判断CTS结束的时候,做相应的处理
}
break;
default:
break;
}
1、CtsThemeHostTestCases
在PackageManagerService.java中
@SuppressWarnings("resource")
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
.......
synchronized (mAvailableFeatures) {
for (FeatureInfo feat : mAvailableFeatures.values()) {
if (checkin) {
pw.print("feat,");
pw.print(feat.name);
pw.print(",");
pw.println(feat.version);
} else {
pw.print(" ");
pw.print(feat.name);
if (feat.version > 0) {
pw.print(" version=");
pw.print(feat.version);
}
pw.println();
}
}
//判断CTS运行跳过此项测试
if (isPackageAvailable("android.theme.app",mContext.getUserId())) {
pw.print(" ");
pw.print("android.hardware.type.television");
pw.println();
}
}
}
2、CtsMultiUserHostTestCases
如果不支持多用户,可以把最大用户数config_multiuserMaximumUsers改成1
3、CtsAppTestCases:android.app.cts.ActivityManagerMemoryClassTest#testGetMemoryClass
如果发生了OOM,可能是设备定义的最大内存增长值dalvik.vm.heapgrowthlimit(注意这个值要大于192)与init.target.rc中定义的不相同
4、CtsAppTestCases:android.app.cts.ActivityManagerTest#testIsUserAMonkey
代码中有调用ActivityManagerService.java的setActivityController方法,并且传的第二个boolean值传入的是true,这样会将设备设置成monkey
5、CtsUiAutomationTestCases:android.app.uiautomation.cts.UiAutomationTest#testWindowAnimationFrameStats
activity跳转动画,将禁止跳转的config config_disableTransitionAnimation的值修改为false
6、CtsContentTestCases:android.content.cts.AvailableIntentsTest
此条测试的内容是测至少有一个接收对应action的activity,但是对应的app没有安装到设备中。装上原生的app即可pass。
7、CtsOsTestCases:android.os.cts.StrictModeTest
设备中没有模块有对应的android.intent.action.VIEW和typ=image/jpeg的activity可以隐式启动测试用例中的jpg,装上原生的Gallery2即可pass
8、CtsProviderTestCases:android.provider.cts.MediaStoreIntentsTest
此条测试的内容是是否有ResolveInfo能够解析与IntentFilter相对应的intent得到的信息,装上原生的Gallery2即可pass
9、CtsWindowManagerDeviceTestCases:
android.server.wm.MultiDisplaySystemDecorationTests#testLaunchSingleHomeActivityOnDisplayWithDecorations
android.server.wm.MultiDisplaySystemDecorationTests#testLaunchHomeActivityOnDisplayWithDecorations
android.server.wm.MultiDisplaySystemDecorationTests#testLaunchSingleSecondaryHomeActivityOnDisplayWithDecorations
无法返回到launcher3导致的错误,装上原生的launcher3即可pass
10、CtsKeystoreTestCases:android.keystore.cts.KeyAttestationTest
需预制谷歌提供的 Attestion Key,否则cts 相关测试失败
11、CtsAppSecurityHostTestCases:android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage
需要sd卡
12、CtsOmapiTestCases
跟NFC相关,需要使用CTS专用白卡测试
13、CtsSystemUiTestCases:
android.systemui.cts.WindowInsetsBehaviorTests#tappableElements_tapSamplePoints_notExcludeViewRects_withoutAnyCancel
android.systemui.cts.WindowInsetsBehaviorTests#tappableElements_tapSamplePoints_excludeViewRects_withoutAnyCancel
屏幕密度低,点击采样点还没执行完就到达timeout时间,调大屏幕密度可以pass:adb shell wm density 480