本文档主要初步整理Android P对GMS认证的新要求
一、基本环境
主机要求:
- Java 8
- Python 2.7
- ADB 1.0.39
VTS 环境
$ sudo apt-get install python-dev
$ sudo apt-get install python-protobuf
$ sudo apt-get install protobuf-compiler
$ sudo apt-get install python-virtualenv
$ sudo apt-get install python-pip
注意事项:
1、P版的CTS测试过程中,不要拔手机,否则最终结果无法完整测试出所有模块
2、测试指令发生了变化,具体可在终端使用help查看
3、由于AVB2.0的影响,替换GSI和之前的方法有所不同,需要注意
二、CTS
1、Android 9.0 针对 WLAN RTT 功能增加了一个 API,此 API 允许设备测量自身与接入点之间的距离,从而显著提高室内位置信息精确度。
以下是支持 WLAN RTT 的两款推荐设备:Google Wifi 和 Compulab 的 Filet2 接入点(使用 5GHz 频段,带宽设为 40MHz)。
2、Android 9.0 的初始 API 级别
对于搭载 Android 9.0 的设备,请将属性 ro.product.first_api_level 设置为在代号、标记和细分版本号上找到的有效值。
对于搭载 Android 8.x 或更低版本的设备,请为产品的第一个版本取消设置(移除)属性 ro.product.first_api_level。对于所有后续版本,请将 ro.product.first_api_level 设置为正确的 API 级别值。
3、Android 9.0 引入了 Open Mobile API 测试用例,用于检查安全元件底层实现是否符合标准,需要特殊的SIM卡进行测试。
4、视频播放的存储空间要求
以下是按最大视频播放分辨率列出的存储空间要求:
- 480x360: 98MB
- 720x480: 193MB
- 1280x720: 606MB
- 1920x1080: 1863MB
5、部分基本要求
屏幕尺寸至少为 2.5 英寸。
必须支持第三方输入法编辑器应用。
必须提供“Home”、“Recents”和“Back ”功能;“Back ”功能的常规按下事件和长按事件都可以发送到前台应用,上述事件不得被系统占用,且可从 Android 设备外部触发。
必须支持触摸屏输入。
如果包含各种sensor,则需要保证sensor的最低性能要求,参考CDD文档。
32位系统和64位系统,在不同的密度和分辨率的情况下,对最小内存都有要求,参考CDD文档。
必须包含麦克风,必须具有音频输出机制,并声明 android.hardware.audio.output。
必须支持多种音频视频编解码,具体参考CDD文档。
Android 9.0 CDD文档:https://source.android.com/compatibility/9/android-9-cdd
百度云盘:https://pan.baidu.com/s/13Cwr5rj9GrC2qhDoM-NCvg 提取:gyth
----待更新----
三、CTS-ON-GSI
----待更新----
四、VTS
1、Android 8.x VTS测试包括98个测试模块,总共约6100项测试;Android 9.0 VTS测试则包括212个模块,总共约 7790 项测试。
2、对于搭载Android 9.0 的设备,有两组可用的 GSI:一组用于搭载 Android 9 的设备,另一组则用于升级到 Android 9 的设备。
搭载 Android 9 的设备可以为 A/B 和非 A/B 设备使用相同的 GSI。
例如,要测试基于 arm64 ABI 且包含与 2018-08-05 Android 安全安全补丁程序的设备,请选择以下 GSI:
system_aosp_arm64_20180805.img
升级到 Android 9 的设备应使用与该设备(是否支持 A/B 更新)的 ABI 对应的 GSI 以及设备的 security_patch_level。这种方式与搭载 Android 8.x 的设备的方式类似。
例如,要测试基于 arm64 ABI、支持 A/B 更新且包含与 2018-08-05 Android安全补丁程序的设备,请选择以下 GSI:
system_aosp_arm64_ab_20170801.img
3、注意:运行 Android 8.x 的设备不需要SIM 卡。运行 Android 9.0 的设备则必须包含一张用于 VTS 测试的 SIM 卡。用于VTS测试的SIM卡与用于CTS中Open Mobile API测试的SIM卡是同一种特殊的SIM卡。
4、确保设备已连接到支持 IPv6 的 WLAN 网络(如果该设备具有GPS/WLAN/移动网络功能,必须将其恢复出厂设置并开启位置信息设置)。
五、GTS
GMS包更新了以下几个feature:
- Uncompressed DEX in Privileged Apps
- AndroidPlatformServices
- GoogleRestore
- Device Health Services (Turbo)
- GmsCore APK Variant for Android 9
- GoogleContacts is Non-privileged
- Non-SDK API Access Whitelist
- Google Media Effects Library Deprecation
- Use of PRODUCT_SYSTEM_DEFAULT_PROPERTIES
- Updated Wizard Scripts
- Updated SearchLauncher
1、Android 9.0不再需要com.google.android.media.effects.jar,包括已升级的设备。
2、Android 9.0如果预加载GoogleContacts,则必须为非特权(non-privileged ),版本必须高于2.5。
3、Android 9.0设置向导中的A backup from the cloud选项要出现在Google帐户登录界面之前。
4、Android 9.0的GMS备份功能支持端到端加密备份,需要注意锁屏实现机制。
5、Android 9.0的GMS设备必须保留SettingsBackupAgent。
6、Android 9.0引入了App standby buckets,让平台根据用户限制应用程序。如果启用此功能,Google必须可以更新限制参数,以确保应用开发者的一致性。
具体的内容请参考以下文档:
链接:https://pan.baidu.com/s/1Slz0Y7bXhTEHGWuAVXa6Xg
提取码:39a0
----待更新----
六、BTS
BTS测试直接测试Android系统镜像。通过扫描系统镜像,检查其中是否预安装了恶意软件和其他可能有害的应用 (可能是由 OEM 的供应商和提供商引入的)。BTS 采用了和 Google Play同样的安全扫描和分析的技术。
注意:Google 会不断更新数据库以及用于检测恶意软件和安全威胁的技术。所以可能之前通过的版本也会被检测出来新的问题。
可以通过以下某种方式上传软件版本(我们一般通过3PL提交):
Google云端硬盘:google将共享一个 Google 云端硬盘文件夹,可以将自己的版本复制到该文件夹中。
SFTP保管箱:google将为您设置一个安全文件传输协议 (SFTP) 帐号,以上传编译软件。
通过3PL提交:使用其中一种支持的格式将固件提交给3PL验证者。
在后台,BTS 会自动在 Google 的基础架构上运行,无法离线使用的内部服务。BTS 完成后,相关结果会出现在 APFE 上。
BTS结果处理:
任何疑似预安装了恶意软件或其他问题都将被视为测试失败无法通过认证。Google只能提供恶意软件软件包名称和恶意软件类。无法提供关于可能产生的影响、其行为或如何检测到该行为的详细信息。
如果Google在版本已获批准后发现问题,合作伙伴必须及时处理新问题,并发布已根据合作伙伴协议解决相关问题的更新版本。仍然包含问题的新版本将不会获得批准。
如果认为APK的标记有误,需要上报给google,并提供尽可能详细的关于该应用预期功能的信息。提供有关文件来源的详细信息(尤其是在文件由内部或由供应商制作而成的情况下)。Google会根据具体情况进行调查并处理这些应用。
七、STS
----待更新----
八、Cts Verifier
1、Cts Verifier测试中Android9.0关于camera的测试相对于Android8.x来说更加复杂,测试项也更多,需要重点关注。
----待更新----
九、GMS认证注意事项
1、所有自动化测试套件都会尝试在运行时下载内容,包括CTS媒体文件或业务逻辑文件。很多情况下防火墙会导致测试准备失败。可以尝试尝试将下面的内容添加到.profile(在Ubuntu上)。
export JAVA_TOOL_OPTIONS =' - Djava.net.useSystemProxies = true'
2、Android 9.0 强烈建议预加载app的最低目标SDK版本为26或者更高。
3、Android 9.0 必须支持DNS over TLS,并且必须提供UI支持,默认的DNS隐私模式设置应该是自动的。
4、Android 9.0 的Widevine 数字版权管理,Android 9: Version 14 for new devices. Version 13 or 14 for upgrading devices。
5、应用程序崩溃对话框,Android 9.0 改变了App Crash Dialog的行为。它不再出现前台和后台应用程序的一次性崩溃。但是,如果应用程序连续崩溃两次或多次,App Crash Dialog仍会显示,让用户可以选择查看应用信息或强制关闭应用,不能修改此行为。
6、Android 9.0引入了在AOSP中发布的运营商ID数据库packages/providers/TelephonyProvider/assets/carrier_list.textpb
,不能改变此实现或数据库的内容,必须使用AOSP中发布的最新版本的运营商ID数据库。
7、如果满足某些硬件要求,强烈推荐Android 9.0 支持低延迟,MIDI和专业音频功能。
- Devices having 2GB or more RAM: [`android.hardware.audio.low_latency`] [`android.software.midi`]
- Devices having 4GB or more RAM: [`android.hardware.audio.pro`]
8、Android 9.0中,如果ActivityManager.isLowRamDevice()为false,相机HAL必须使用android.hardware.camera.device@3.2或更高版本。
如果ActivityManager.isLowRamDevice()为true,则摄像头HAL可以提供android.hardware.camera.device@1.0版本。但强烈建议使用3.2版本及以上。
9、Android 9.0的设备必须在以下内核版本上运行:
- 4.4.107 or higher
- 4.9.84 or higher
- 4.14.42 or higher
在2018年下半年推出的SoC必须运行在4.9.8以及以上的内核版本
10、VNDK library classification and ABI
Android 9.0的设备必须默认打开 VNDK snapshots :BOARD_VNDK_VERSION := current
11、Android 9.0的设备必须在设备的非易失性存储上具有以下分区:
- system - for the framework-specific portions of the code
- vendor - for the chipset-specific portions of the code
- boot - for the Linux kernel image
12、Android 9.0的设备的设备必须使用system-as-root
- BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
13、系统SDK要求
Android 9.0 的设备必须通过设置BOARD_SYSTEMSDK_VERISONS:= 28来启用SystemSDK。
Vendor分区中的所有APK和JAR都不得使用系统分区中定义的隐藏API。
无论API是否来自AOSP,系统分区中定义的隐藏API都不得使用@SystemApi进行注释。
14、Android 9.0的设备必须定义PRODUCT_SHIPPING_API_LEVEL, 其值必须大于等于28。
15、Android 9.0 的Managed profile badging标记有变化,如下图:
----待更新----