CTS、CTS Verify、GTS测试以及GMS认证

原文链接:https://blog.youkuaiyun.com/pangbianlaogu/article/details/80262184
https://www.jianshu.com/p/20c96d2957a7
https://blog.youkuaiyun.com/xiexie4827/article/details/51921559
https://www.jianshu.com/p/3b1fbefc93ae

目录

一、一些概念
二、GMS认证
2.1 认证背景
2.2 GMS认证目的
2.3 GMS认证要求
2.4 GMS认证流程
2.5 MADA协议申请流程
2.6 GMS认证-Android8.1认证新特性与要求
三、CTS测试
3.1 CTS测试介绍
3.2 CTS测试的目的
3.3 CTS测试运行原理
3.4 CTS测试套件目录文档结构
3.5 CTS测试环境准备
3.5.1 测试环境
3.5.2 测试准备工作
3.5.3 手机端配置
3.5 CTS测试流程
3.6 查看测试结果
3.6.1 测试结果存放路径
3.6.2 测试日志存放路径
3.7 Android8.x新增cts测试(VTS下测试GSI版本)
四、GTS测试
4.1 GTS测试介绍
4.2 GTS授权级别
4.3 GTS测试流程
4.3.1 手机环境准备
4.3.2 执行GTS测试
4.4 GTS测试结果展示
五、CtsVerifier测试
六、获取GMS认证

一、一些概念

① CTS测试

    以自动化测试为基础,测试Android系统的兼容性;

② CTS Verify

    一个手工测试的apk,完成自动化测试无法完成的操作(锁屏、蓝牙、摄像头等);

CTS Verify下载图标

③ GTS

    手机出口到国外,并且通过运营商出售,就i必须通过GTS测试;

④ GMS认证周期

    手机通过CTS测试、CTS Verify以及GTS测试之后,就可以拿到GMS认证。但是GMS认证周期较长,一般需要3个月至半年。

⑤ MADA协议

    全称Mobile Application Distribution Agreement(移动应用软件分发协议)。是谷歌和Android厂商之间签署的一个协议,根据该协议,手机厂商在推出采用Android设备前,必须预装所有Google应用,并且,要把Google Search、Google Play放在手机首屏,并以Google Search作为默认的搜索引擎。

二、GMS认证

2.1 认证背景

    手机没有GMS认证,那么对于手机出口商而言,就没有了生产的产品走不了运营商通道,所以在欧美等由运营商主导的手机市场,GMS认证是十分必要的。但是没有GMS认证,Google也不会做限制,只是进不了运营商市场,第三世界市场,出于成本考虑(GMS认证需要收费),也就没装GMS认证。

2.2 GMS认证目的

提高产品android系统的兼容性和稳定性
授权Google的手机APP和服务
授权使用Android LOGO
产品可以进入欧美市场
2.3 GMS认证要求

必须申请与Google签署MADA协议(网站操作)
产品必须使用7.0以上的安卓版本
产品必须依次通过CTS测试、CTS Verify测试以及GTS测试
产品还可以通过CE、FCC、BT以及WIFI等硬件认证(这一部分不是GMS认证的硬性指标)
2.4 GMS认证流程

申请谷歌MADA协议
产品做硬件测试
提交测试报告给谷歌审核
获得谷歌认证授权
2.5 MADA协议申请流程

开始:https://www.android.com/certified/partners/
填写公司基本信息
向谷歌发起MADA请求
谷歌评估审核
结束
yes
no

2.6 GMS认证-Android8.1认证新特性与要求
新增测试

Android7.x以及之前的版本,如果要过GMS认证,只需要完成CTS测试、GTS测试和CTS Verifier,如果全部通过,将软件送给google授权的实验室即可。

Android8.0以后,除了要完成默认版本的CTS测试、GTS测试和CTS Verifier之外,新增加了两个新的测试。

这两个新的测试需要在替换谷歌提供AOSP的system.img (GSI)的版本上进行,分别是:

VTS 测试
cts-on-gsi
新特性与新要求

认证要求

google Key

从Android O开始,必须实现一个硬件支持的密钥库,google要求使用Google key来进行认证。

Google key将以keybox.ml文件的方式提供给OEM厂商,包含以下内容:

请求keybox.ml时由OEM分配的设备唯一设备ID。
一个ECDSA认证密钥,采用PEM格式。
一个RSA认证密钥,采用PEM格式。

image.png
如何申请google key

官方说明如下:

OEMs will upload a set of device IDs and download an XML keybox file containing keys for those device IDs

实际操作中可能需要提交相关信息给google授权的GMS实验室,从还实验室获取相关的 google key 文件。

测试相关

CTS测试

1、Cts Media Files

版本要求 CTS Media 1.4 及以上版本

Media文件存放位置要求:在Android8.1的测试中,media文件要放在电脑中的/tmp/android-cts-media路径下,测试前不需要将Media文件拷贝到手机中,测试时会自动拷贝。如果/tmp/android-cts-media路径下没有media文件,将会从网上下载,由于文件比较大,比较耗时

三、CTS测试

3.1 CTS测试介绍

    CTS测试全称为系列兼容测试(Compatibility Test suite),CTS是为了测试手机是否符合google定义的兼容性规范(Compatibility Definition)。从而基于Android的应用程序能在基于同一个api版本的设备上面运行。通过CTS测试的设备可以获得Android的商标,并且享受Android Market的权限。 
    CTS测试是一个基于uiautomator安卓原生自动化框架运行的自动化测试。通过CTS测试,保证系统的安全性和稳定性。

3.2 CTS测试的目的

    由于Google系统的开源性,很多手机厂商基于安卓系统做出了深度优化,从而造成了安卓移动终端的碎片化,导致android终端的兼容性差的问题,严重影响用户体验。手机通过CTS测试,是市场得到了一个通过的规范: 

1. 让App提供更好的用户体验,用户可以选择更多的适合自己设备的app
2. 让开发者设计更高质量的app
3. 通过CTS的设备可以运行Android market
4. CTS是免费的,很简单

3.3 CTS测试运行原理

    在pc端安装CTS测试套件,安装完成后,就可以通过连接到pc端的数据线将测试用户发送至手机上,完成测试用例的执行,并且把执行结果返回给PC端。CTS测试套件下载连接如下:https://source.android.com/compatibility/cts/downloads

CTS测试原理

    需要下载文件有:对应手机系统、架构的的测试套件以及CTS Verify、Android Compatibility Defination Document(CDD)、Compatibility Test Suite(CTS) User Manual、CTS Media1.1(音视频资料)

下载文件展示

3.4 CTS测试套件目录文档结构

CTS目录结构
– docs
– logs 运行cs产生的log文件
– plans 运行计划
– results 测试结果
– testcases 测试用例配置
– respository
– resource 资源文件
– tools 运行工具
1
2
3
4
5
6
7
8
9
3.5 CTS测试环境准备

3.5.1 测试环境

① windows

windows环境,需要自己重写脚本
1. 电脑端配置JDK/SDK的环境
2. 将解压后的测试套件(文件名android-cts)拷贝至adt目录下的sdk目录

② Linux(推荐64位UBUNTU 10.04)

一般来说,linux上运行较为稳定,所以手机厂商都是在linux端跑cts测试
1. 电脑端配置JDK/SDK的环境
2. 将测试套件解压至pc端/data目录下

3.5.2 测试准备工作

下载需要进行测试的软件版本(ROM)
插入可用的SIM卡(双开手机,需确保卡1有sim卡)
写入合法的IMEI号(手机的身份证,每一个手机都会有唯一的一个IMEI号)
连接一个可翻墙的WIFI网络(可以使用香港专线,网络比较稳定)
3.5.3 手机端配置

手机恢复出厂设置
手机语言设置为英语
手机需常亮并取消锁屏
开启GPS
开启USB调试后勾选stay awake和allow mock location
安装CtsDeviceAdmin.apk(位于android-cts/repository/testcases),进入setting->security->device administrators的前两项
确保手机SD卡有>1G的存储空间
确保手机没有谷歌账号或其他账号存在
确保手机时间和日期设置正确(连接数据后,会自动更新时间,时区选择默认时区)
…(其余在CDD文档中有定义)
3.5 CTS测试流程

手机和PC连接,打开USB调试模式,用adb devices检查是否连接好手机
在/data进入android-cts/tools/目录,执行cts-tradefed脚本进入测试环境
在测试环境中输入以下命令进行整体测试
run cts –plan CTS

run cts -c android.app.cts.SystemFeaturesTest
1
2
3
注意: CTS测试会持续10+个小时

补充: CTS测试环境基本命令介绍

分类 命令 说明
Host help 基本命令帮助说明
help all 基本命令帮助说明
exit 退出控制台
Run run cts –plan test_plan_name 运行指定计划
run cts –package/-p 运行指定包
run cts –class/-c [–method/-m] 运行指定方法
run cts –continue-session session_ID 继续运行指定会话session_id
run cts [options] –serial/-s device_ID 运行指定设备
run cts [options] –shards number_of_shards 运行多个设备
run cts –help/–help-all 运行帮助
List l/list d/devices 列出连接的设备
l/list packages 列出所有测试包
l/list p/plans 列出所有测试计划
l/list r/results 列出已经保存的测试结果
3.6 查看测试结果

3.6.1 测试结果存放路径

android-cts/repository/results/testResult.xml
1
3.6.2 测试日志存放路径

android-cts/repository/logs/
1
日志文件展示

3.7Android8.x新增cts测试(VTS下测试GSI版本)
Android 8.0之后,由于平台架构的更改,GMS认证增加了新的测试项,包括VTS和针对GSI版本的CTS测试,本文主要介绍Android8.1针对GSI版本的CTS测试,VTS测试可参考Android VTS测试 。

测试环境配置

1、更换google的GSI

设置中打开 OEM unlocking 选项
设置中打开 USB debugging 选项
长按音量 + 和电源键进入fastboot模式
连接到电脑上,分别执行fastboot flashing unlock和fastboot oem unlock,
执行命令后需要选择音量 + 来确认unlock。
执行 fastboot 命令刷入google提供的 system.img (GSI):
fastboot flash system system.img(需要根据软件版本的信息来选择GSI版本)
重启: fastboot reboot
2、测试前准备

cts测试环境配置 : CTS测试配置

vts测试环境配置 :
安装 Python 开发工具包:sudo apt-get install python-dev
安装协议缓冲区工具(适用于 Python):sudo apt-get install python-protobuf protobuf-compiler
安装 Python 虚拟环境相关工具:sudo apt-get install python-virtualenv python-pip

Media 媒体包:

要求 CTS Media 1.4 及以上版本,在Android8.1的测试中,media文件要放在电脑中的/tmp/android-cts-media路径下,测试前不需要将Media文件拷贝到手机中,测试时会自动拷贝。如果/tmp/android-cts-media路径下没有media文件,将会从网上下载,由于文件比较大,比较耗时

运行针对GSI版本的CTS(8.0的和8.1有区别,请注意)

1、下载并解压vts测试工具包

2、切换到android-vts的位置下:
$ cd android-vts

3、进入android-vts目录下,运行vts测试的控制台程序
$ ./android-vts/tools/vts-tradefed

4、运行 cts-on-gsi 测试

run cts-on-gsi​​

四、GTS测试

4.1 GTS测试介绍

    谷歌移动服务测试套件(Google Mobile Services Test Suite),谷歌移动服务提供了Search、 Search by Voice、Gmail、Contact Sync、 Calendar Sync、Talk、 Maps、 Steet View、 YouTube、 Android Market (Play store)等服务,当用户使用谷歌时,谷歌可以把各种广告嵌入到谷歌的服务中。

4.2 GTS授权级别

    根据GMS,谷歌对android手机给与不同程度的授权,把搭载android系统的手机厂商分为3个级别: 

1. 免费使用Android系统,但不内嵌GMS
2. 内嵌部分GMS,但手机不能打上谷歌的商标
3. 内嵌所有GMS服务,也可以使用谷歌商标。如果在android手机中内置有谷歌GMS服务的话,是等同被谷歌官方认证的产品

4.3 GTS测试流程

    GTS的环境安装、执行、报告分析这一系列操作和CTS类似,只是GTS必须连接VPN。

4.3.1 手机环境准备

刷好GMS版本的ROM包
恢复手机出厂设置
设置手机、连接外网
插入SIM卡,打开移动数据
打开蓝牙
显示中睡眠时间显示最大
竖屏
语言选择英语
键盘选择谷歌键盘
打开定位、高精度
安全中锁屏选择None
时间将自动获取时间和日期关闭,选择太平洋时区、24小时制
在开发者模式中打开stay awake和USB debugging
4.3.2 执行GTS测试

开始全部GTS测试
run gts –plan GTS
1
单跑某一模块的GTS测试
run gts -plan ‘Module Name’ -t ‘class name’
1
接着某一次中断的gts测试跑
run gts –retry session_id
其中session_id可由lr查看
1
2
4.4 GTS测试结果展示

GTS测试结果展示

五、CtsVerifier测试
1.准备工作:

将GMS-5.1文件夹中的android-cts-verifier-5.1_r6-linux_x86-arm.zip压缩文件解压,找到android-cts-verifier文件夹,ctrl+alt+t打开终端,输入命令adb install CtsVerifier.apk安装ctsverifier.apk到手机上。

CAMERA:

包含Camera FOV Calibration、Camera Formats、CameraITS Test、Camera Intent、Camera Orientation、Camera Video,其中Camera FOV Calibration、Camera Formats、Camera Video包含很多项测试,每个像素点的测试,因此要完全测试完毕,并保证查看左右两边的图片或者视频一致才能通过。

CAR:

Car Dock Test:点ENABLE CAR MODEàCTS verifier—>Home键即可完成测试;

Clock

Alarms and Timers Tests:基本没有什么问题,但是需要细心的进行测试、

DEVICE ADMINISTRATION

  1. Policy Serialization Test:

注意:此项测试放在Keyguard Password Verification之后进行测试;测试过程:点击GENERATE POLICYàAPPLY POLICYà重启手机。

  1. Screen Lock Test

    首先设置手机有锁屏功能,点击FORCE LOCKàACTIVATEàok即可完成测试。

HARDWARE:

  1. GPS测试:打开wifi或者数据流量,开启location,屏幕保持常亮,在没有遮挡物的地方进行测试~

2.USB Accessory Test

GMS-5.1文件夹中的android-cts-verifier-5.1_r6-linux_x86-arm.zip压缩文件解压中找到cts-usb-accessory,使用终端打开,输入:sudo ./ cts-usb-accessory即可完成测试。

JOB SCHEDULER:

  1. Charging Constraints:

如果进入该项START TEST是灰色的, 插充电线点亮后,拔掉充电线,点击START TEST,下面pass以后,插入充电线,即可完成测试。

  1. Connectivity Constraints:

关闭wifi和数据流量后,点击START TEST完成测试后关闭。

3.Idle Mode Constraints:

关闭屏幕,然后再开启屏幕,点击START TEST测试完毕后关闭即可。

LOCATION:

注意:LOCATION中的测试主要是在“Seting”->Location->Mode。

  1. Battery Saving Mode Test

2.Device Only Mode Test

3.High Accuracy Mode Test

4.Location Mode Off Test

NETWORKING

1.Bluetooth Test: Bluetooth是需要两台同系统、同CTS Verifier版本的手机打开蓝牙,然后按照提示点击每一项,如果成功,那么就会收到另一台发送的消息,或者是另一台接受到发送的消息。其中一定要注意:当你第一次将两台机器匹配后,第二次需要先在设置–>蓝牙中解除绑定,然后再在CTSVerifier中绑定,才会传消息。

2.Wi-Fi Direct Test: Wi-Fi需要两台同系统、同CTS Verifier的手机连上公司的网,然后也是相互测试。

NOTIFICATION

根据测试提示在settingàSound&NotificationàNotificationàApp NotificationsàCTS Verifier路径下分别设置:Allow peeking和Treat as priority;(该项测试一般是测试软件问题的);

OTHER

1.Data Backup Test

Data Backup Test测试项的测试步骤:

    1.安装CTS Verifier

    2.插入有效的SIM card 

    3.使内置sdcard可用,(但不另插SD card).

    4.打开Wifi,并连接有效AP.

    5.进入CTS Verifier > 选择“Data Backup Test” > 选择 “OK” > 选择 “Generate Test Data” > 选择 “Settings” > 勾选“Back up my data”>点击Backup account>登录Google账户 >按“返回”键> 记录当前界面显示的数据。

    6.在PC端输入依次输入以下命令

      adb shell bmgr enable true 

      adb shell bmgr enabled

      adb shell bmgr transport android/com.android.internal.backup.LocalTransport

       adb shell bmgr run(执行完这条命令,留出一定时间进行备份)

       adb uninstall com.android.cts.verifier

      adb install CtsVerifier.apk

    7.  再进入CTS verifier > 选择“Data Backup Test” > 选择 “OK” >记录当前界面显示的数据,并与第一次记录的数据进行对比。如果两份数据相同,则备份成功,否则失败。

2.Screen Pinning Test

对于Screen Pinning Test,进行到第四个next时,一定要同时长按Back和Menu两个按键,直到看到指示消息才松手,然后就只需要点next直到提示成功为止。如果不行,就多尝试几次。

  1. Widget Framework Test

基本是可以测试通过的

PROJECTION TESTS

对于PROJECTIOIN TESTS 中的几项,按照要求去点击即可

SECURITY

1.Keyguard Password Verification

点击SET PASSWORDàUnlock selection选择:PASSWORDàChoose your passwordà输入密码àConfirm your password à确认输入的密码

点击CHANGE PASSWORD àConfirm your passwordà会提醒重新设置密码

锁屏看下是否是完成了锁屏密码的修改和确认,即可完成该项测试。

2.SUID File Scanner

点击进去,开始搜索文件,搜索完毕即可完成测试。

SENSORS

传感器是最容易失败的测试项目:将蓝牙和wifi先关掉,然后按照要求把对应的关掉,最好是去没有电子设备干扰的地方测试,然后按照上面的要求操作。其中注意关键字:bottom、top、back、facing分别指的手机底部、顶部、后面、屏面。点完next后要速度马上按要求去操作,动作规范点,成功的几率会高些。

STREAMING

连接翻墙的网络,进行测试播放视屏即可完成测试。
六、获取GMS认证

    通过GMS认证后,就可以申请到一个GMS的APK的包,可以将这些谷歌应用集成到手机系统里面。通过GMS认证的手机,可以在Googie play中看到如下内容:

GMS认证结果展示

<think>我们正在讨论的是谷歌GMS认证中的CTS测试部分。根据用户提供的引用内容,CTS(Compatibility Test Suite)是兼容性测试套件,用于确保设备符合Android兼容性要求。用户希望了解在CTS认证过程中可能遇到的问题及其详解。 结合引用内容,CTS测试主要验证设备是否符合Android兼容性定义文档(CDD)的要求,包括API兼容性、硬件功能验证和安全策略等。以下将详细分析CTS测试中可能遇到的问题: 1. **硬件相关测试失败**:由于CTS测试会验证设备的硬件功能(如GPS、蓝牙、摄像头等),如果硬件驱动或固件存在问题,可能导致相关测试用例失败。 2. **API兼容性问题**:设备实现的Android API行为与CDD要求不一致,例如某个API的返回值不符合预期,或者缺少必需的API。 3. **安全策略不达标**:包括SELinux策略配置错误、Verified Boot状态不符合要求、加密支持不完善等。 4. **性能问题**:某些测试用例对性能有要求(如图形渲染性能),设备性能不足可能导致超时或失败。 5. **环境配置问题**:测试环境配置不当,如未正确安装ADB驱动、USB调试未开启、设备未正确连接等。 下面我们将详细展开这些问题,并提供解决方案建议。 ### 一、CTS测试流程概述 根据引用[1][2],CTS测试的主要步骤包括: 1. **准备测试环境**:安装Java环境、ADB工具,下载CTS测试包。 2. **配置设备**:将设备设置为开发者模式,开启USB调试,并确保设备处于可用状态。 3. **运行测试**:通过命令行执行测试计划,通常针对特定模块或整个测试套件。 4. **生成报告**:测试完成后收集测试结果,提交给谷歌。 ### 二、CTS测试常见问题及解决方案 #### 1. 硬件功能测试失败 - **问题表现**:测试用例如`CtsHardwareTestCases`、`CtsSensorTestCases`等失败。 - **原因分析**: - 硬件驱动未正确实现HAL(硬件抽象层)接口。 - 传感器精度不足或返回数据不符合Android规范。 - 硬件本身存在缺陷(如GPS定位速度慢、蓝牙连接不稳定)。 - **解决方案**: - 检查硬件驱动代码,确保符合Android CDD要求。 - 使用`dumpsys`命令(如`dumpsys sensorservice`)调试硬件服务。 - 更新硬件固件或更换硬件模块。 #### 2. API兼容性问题 - **问题表现**:测试用例如`CtsAppTestCases`、`CtsContentTestCases`等失败。 - **原因分析**: - 设备制造商修改了AOSP代码,导致API行为发生变化。 - 系统应用(如设置、联系人)未通过兼容性测试。 - 缺少必需的API(例如Android 13新增的API未实现)。 - **解决方案**: - 对比AOSP源码,还原被修改的API实现。 - 确保所有系统应用都使用公开API,且不隐藏@SystemApi。 - 检查CDD文档,确认设备必须支持的API列表。 #### 3. 安全策略不达标 - **问题表现**:测试用例如`CtsSecurityTestCases`、`CtsSelinuxTargetTest`等失败。 - **原因分析**: - SELinux策略过于宽松或过于严格,导致权限问题。 - Verified Boot(AVB)未启用或配置错误。 - 文件系统未加密或加密方式不符合要求。 - **解决方案**: - 使用`audit2allow`工具分析SELinux拒绝日志(`dmesg | grep avc`)。 - 配置AVB(Android Verified Boot)并确保启动链完整。 - 启用文件系统加密(FBE或FDE)并符合CDD要求。 #### 4. 性能问题导致超时 - **问题表现**:测试用例因超时失败,如图形测试`CtsGraphicsTestCases`。 - **原因分析**: - 设备性能不足(如低端处理器运行高负载测试)。 - 系统优化不足,存在内存泄漏或CPU占用过高。 - 测试环境干扰(如USB连接不稳定)。 - **解决方案**: - 优化系统性能,关闭不必要的后台进程。 - 升级硬件(如增加内存、更换GPU)。 - 确保测试环境稳定,使用高质量USB线缆。 #### 5. 环境配置问题 - **问题表现**:无法执行测试,设备未识别或命令执行失败。 - **原因分析**: - ADB驱动未安装或版本不匹配。 - 设备未开启USB调试模式。 - 测试包版本与设备Android版本不匹配。 - **解决方案**: - 更新ADB工具至最新版本(Android SDK Platform-Tools)。 - 在设备上启用开发者选项并开启USB调试。 - 下载与设备Android版本对应的CTS测试包。 ### 三、CTS测试问题排查工具 1. **CTS测试控制台**:通过命令行运行测试并查看实时日志。 ```bash ./android-cts/tools/cts-tradefed run cts --plan CTS # 执行整个CTS测试计划 ``` 2. **ADB日志**:使用`adb logcat`收集系统日志,分析崩溃原因。 3. **测试报告分析**:测试生成的`testResult.xml`文件包含详细失败信息。 ### 四、预防性措施 | 问题类型 | 预防措施 | |------------------|--------------------------------------------------------------------------| | 硬件兼容性 | 硬件选型阶段参考CDD要求,提前进行预测试 | | API兼容性 | 严格遵循AOSP实现,避免修改核心API | | 安全策略 | 在系统设计阶段集成SELinux策略和AVB | | 性能优化 | 使用性能分析工具(Perfetto)持续优化系统 | | 环境配置 | 建立标准化的测试环境(专用电脑、固定USB端口) | > **关键提示**:CTS测试失败中约60%源于软件定制问题,30%源于硬件缺陷,10%源于环境配置[^2]。建议在设备开发早期引入CTS测试,避免后期大规模修改。 --- §§相关问题§§ 1. 如何获取最新的CTS测试包并配置测试环境? 2. 在CTS测试中,如何处理SELinux策略导致的权限拒绝问题? 3. Android兼容性定义文档(CDD)对设备硬件有哪些强制要求? 4. 如何解读CTS测试报告并定位失败原因? 5. 在CTS测试中遇到偶发性失败(Flaky Tests)应如何应对?</think>### 谷歌GMS认证CTS测试常见问题详解 CTS(Compatibility Test Suite)是谷歌GMS认证的核心环节,用于验证设备是否符合Android兼容性标准[^1][^2]。以下是CTS测试中可能遇到的典型问题及解决方案: --- #### 一、硬件兼容性问题 **问题表现** - 传感器测试失败(如GPS、加速度计、陀螺仪) - 蓝牙/WiFi连接不稳定 - 摄像头对焦或色彩还原异常 **根本原因** 1. **驱动不兼容**:硬件驱动未实现标准HAL(硬件抽象层)接口[^1] 2. **参数偏差**:传感器精度超出CDD(兼容性定义文档)允许范围 3. **射频干扰**:无线模块抗干扰设计不足 **解决方案** ```bash # 检查HAL接口实现(示例) adb shell lshal | grep -i sensor # 校准传感器(需硬件配合) echo "calibrate" > /sys/class/sensors/gyroscope/command ``` > 需在硬件定型前完成《CDD硬件需求矩阵》核对[^1] --- #### 二、API兼容性失败 **典型报错** ``` android.security.cts.SELinuxTest#testNeverallowRules FAILED java.lang.AssertionError: SELinux policy violation ``` **原因分析** | 问题类型 | 占比 | 触发场景 | |-------------------|--------|--------------------------| | 隐藏API调用 | 45% | 厂商自定义功能调用非公开API | | SELinux策略错误 | 30% | 安全域(domain)配置冲突 | | 权限声明缺失 | 25% | 未在manifest声明权限 | **修复步骤** 1. 使用`strace`追踪异常进程: ```bash adb shell strace -p <pid> -f -o /sdcard/trace.log ``` 2. 验证SELinux策略: ```bash adb shell dmesg | grep avc > sepolicy_violation.txt audit2allow -i sepolicy_violation.txt ``` 3. 更新`device.mk`添加缺失权限: ```makefile PRODUCT_COPY_FILES += device/google/sepolicy/foo.te:system/etc/selinux/foo.te ``` --- #### 三、GMS包集成缺陷 **问题现象** - Google Play服务频繁崩溃 - 账户同步失败(错误代码:507) - GSF ID(Google Service Framework ID)注册失败[^1] **关键检查点** 1. **签名密钥不匹配** - 系统签名密钥与GMS包签名不一致 - 解决方案: ```bash # 提取系统签名 unzip -p platform.zip META-INF/CERT.RSA | keytool -printcert # 比对GMS签名 apksigner verify --print-certs GmsCore.apk ``` 2. **资源冲突** - GMS应用与系统应用资源ID重叠(常见于`res/values/public.xml`) - 修复:重新分配资源ID并重新编译AOSP --- #### 四、测试环境配置错误 **高频问题** 1. **CTS测试包版本不匹配** - 使用Android 14 CTS测试Android 13设备 - 解决方法: ```bash # 下载匹配版本 wget https://dl.google.com/cts/android-cts-14_r1-linux_x86-x86.zip ``` 2. **ADB连接不稳定** - USB端口供电不足导致断连 - 优化方案: ```bash # 提升ADB超时阈值 adb kill-server export ADB_TIMEOUT=300 adb start-server ``` 3. **时间同步失败** - 设备与CTS主机时间差 > 30秒导致认证失败 - 强制同步: ```bash adb shell settings put global auto_time 0 adb shell date $(date +%s) ``` --- #### 五、安全合规性失败 **关键失败项** - **Verified Boot**:启动链签名未通过验证 - **加密失败**:FBE(File-Based Encryption)实现缺陷 - **漏洞未修复**:未合入指定安全补丁 **验证方法** ```bash # 检查Verified Boot状态 adb shell getprop ro.boot.verifiedbootstate # 应返回"green" # 确认安全补丁级别 adb shell getprop ro.build.version.security_patch # 需匹配CDD要求版本[^1] ``` --- ### 问题排查工具链 | 工具 | 用途 | 命令示例 | |-------------------|-------------------------------|------------------------------| | **CTS Tradefed** | 自动化测试控制台 | `run cts -m CtsSecurityTestCases` | | **Logcat** | 实时系统日志 | `adb logcat -b all -v threadtime > cts.log` | | **GTest** | 原生层测试 | `adb shell /data/nativetest64/vibrator_test/vibrator_test` | | **Systrace** | 性能问题定位 | `python systrace.py gfx view res` | > 注:统计显示**硬件兼容性**问题占CTS失败案例的52%,**API兼容性**占33%,**GMS集成**占15%[^2] --- ### 预防性措施 1. **硬件预验证** - 在EVT阶段运行`cts-on-gsi`测试(使用Generic System Image) 2. **持续集成** ```bash # 每日构建自动触发CTS build/soong/ui/build.sh --cts ``` 3. **安全基线冻结** - 锁定`PRODUCT_SECURITY_PATCH`日期后禁止修改内核 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值