1.android.security.cts.PackageSignatureTest测试fail(MTK平台)
原因:由于用的是google default key而导致的fail,需要自己定义release key,不仅可以满足CTS request,还可以满足工信部CATR TAF spec。
方案:在编译器执行如下命令:
Genernate the release key
./development/tools/make_key releasekey '/C=CN/ST=BeiJing/L=HaiDian/O=MediaTek/OU=WCD/CN=demo/emailAddress=demo@mediatek.com',类似以此产生platform keys,media keys,shared keys,testkey.
然后把这些生成的密钥移动到device/mediatek/common/security/${Project}路径下,还有一点最重要的是要在ProjectConfig.mk中设置宏MTK_SIGNATURE_CUSTOMIZATION = yes,最后编译自动会生成二进制的apk签名,问题解决!
2.com.google.android.permission.gts.InitialRuntimePermissionStateTest#testAllSystemAppsUsingRuntimePermissionsTargetMncAndAboveSdk测试fail(MTK/Sprd都适用)
原因:这是由于一些apk的sdk版本过低导致的权限问题
方案:导出device.log,查找出是哪些apk,然后在对应apk下的AndroidManifest下修改下目标sdk,一般都修改为当前最新版的
3.Camera FOV Calibration测项failed(适用于MTK平台,展讯平台修改较复杂,后面会更新)
原因:Report FOV与Display FOV的值相差2度以上
方案:测试时把绿线和黑线对齐,这时查看Display FOV实测值是多少,记录下来。然后查看对应项目的cfg_setting_imgsensor.cpp文件,看看getSensorViewAngle中MainSensorHorFOV的值是多少?把MainSensorHorFOV的值改成刚才记录的实际结果就OK了,如果是前摄有误差,同理修改下SubSensorHorFOV 的值为实测值。
4.android.os.cts.BuildVersionTest#testBuildFingerprint测试fail
原因:fingerprint信息匹配不一致
方案:fingerprint是设备的唯一标识,由设备的多个信息拼接合成。我自己的修改习惯通常就是在build/core/Makefile文件里重新定义BUILD_FINGERPRINT,比如: BUILD_FINGERPRINT := $(FINGER_PRINT_BRAND)/$(FINGER_PRINT_NAME)/$(FINGER_PRINT_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(FINGER_PRINT_TIME):$(TARGET_BUILD_VARIANT)/$(FINGER_PRINT_BUILD_VERSION_TAGS)
然后在build/core/version_default.mk文件中添加自己对应的部分
FINGER_PRINT_BRAND:=
FINGER_PRINT_NAME:=
FINGER_PRINT_DEVICE:=
FINGER_PRINT_BUILD_VERSION_TAGS:= release-keys(这个必须是release-keys,不然会有其它fail项,具体的我忘记了,后续会补充)
FINGER_PRINT_TIME :=$(shell date +%H%M%S)
brand,name,device在对应的buildinfo文件都是有的,厂商名,设备名等,这时就能保证信息匹配,fingerprint会在out目录下的build.prop文件中生成。
抽空先写这么多,我会定期更新,常见的fail项还有很多,解决CTS fail项一是靠积累经验,二是要分析log,研究一下google测试源码,循序渐进慢慢就能掌握,转载请注明出处,谢谢!