Android 6.0 测试指南

Android 6.0 让您有机会确保应用可使用下一平台版本。此版本包含许多 API 和行为变更,这些变更可能会影响您的应用,如 API 概览行为变更中所述。使用此版本测试应用时,您应重点关注一些特定的系统更改,以确保用户获得良好的体验。

本指南介绍了可以通过应用测试 Android 6.0 功能的具体方法和方法。您应该优先测试以下特定功能,因为它们可能会对应用行为产生较大影响:

测试权限

新的权限模式更改了用户向您的应用分配权限的方式。您的应用必须在运行时要求用户提供各项权限,而不是在安装过程中授予所有权限。对于用户而言,此行为有助于他们更精细地控制每个应用的 activity,并更好地了解应用请求特定权限的原因。用户可以随时向应用单独授予或撤消授予的权限。此版本的此功能最有可能对应用行为产生影响,并且可能会阻止某些应用功能正常运行,或者它们可能在降级状态中正常运行。

这项变更会影响在新平台上运行的所有应用,即使应用并非以新平台版本为目标平台也是如此。该平台为旧版应用提供有限的兼容性行为,但您现在应该开始计划将应用迁移到新权限模型,以便在官方平台发布时发布应用的更新版本。

测试提示

请按照以下测试提示,规划并使用新的权限行为对应用进行测试。

  • 识别应用的当前权限和相关的代码路径。
  • 在各种受权限保护的服务和数据中测试用户流程。
  • 使用授予/撤销权限的各种组合进行测试。
  • 使用 adb 工具从命令行管理权限:
    • 按组列出权限和状态:
      adb shell pm list permissions -d -g
    • 使用以下语法授予或撤消一项或多项权限:
      adb shell pm [grant|revoke] <permission.name> ...
  • 针对使用权限的服务对应用进行分析。

测试策略

权限更改会影响应用的结构和设计,以及您向用户提供的用户体验和流程。您应评估应用的当前权限使用情况,并开始规划要提供的新流程。平台的正式版本提供兼容性行为,但您应计划更新应用,而不是依赖于这些行为。

确定应用实际需要和使用的权限,然后找出使用受权限保护的服务的各种代码路径。为此,您可以结合使用新平台进行测试和代码分析。在测试中,您应通过将应用的 targetSdkVersion 更改为 API 级别 23,专注于选择启用运行时权限。

使用已撤消和已添加权限的各种组合进行测试,突出显示依赖于权限的用户流程。如果依赖关系不明显或不符合逻辑,则您应考虑重构或划分该流程,以消除依赖关系或明确需要相应权限的原因。

如需详细了解运行时权限的行为、测试和最佳做法,请参阅面向开发者的使用系统权限

测试低电耗模式和应用待机模式

当设备处于空闲状态或应用未聚焦时,低电耗模式和应用待机模式的省电功能会限制应用可以执行的后台处理量。系统可对应用施加的限制包括:限制或禁止访问网络、暂停后台任务、暂停通知、忽略唤醒请求和闹钟。为了确保应用在完成这些节能优化后能够正常运行,您应通过模拟这些低功耗状态来测试应用。

在低电耗模式下测试您的应用

要在低电耗模式下测试您的应用,请执行以下操作:

  1. 使用 Android 7.0(API 级别 24)系统映像配置硬件设备或虚拟设备。
  2. 将设备连接到开发计算机并安装应用
  3. 运行应用并使其保持活动状态
  4. 通过运行以下命令,模拟设备进入低电耗模式:
    $ adb shell dumpsys battery unplug
    $ adb shell dumpsys deviceidle step
    $ adb shell dumpsys deviceidle -h
    
  5. 观察重新激活设备时的应用行为。确保应用在设备退出低电耗模式时正常恢复。

在应用待机模式下测试您的应用

如需在应用待机模式下测试您的应用,请执行以下操作:

  1. 使用 Android 7.0(API 级别 24)系统映像配置硬件设备或虚拟设备。
  2. 将设备连接到开发计算机并安装应用
  3. 运行应用并使其保持活动状态
  4. 通过运行以下命令,模拟应用进入待机模式:
    $ adb shell am broadcast -a android.os.action.DISCHARGING
    $ adb shell am set-idle <packageName> true
    
  5. 使用以下命令模拟唤醒应用:
    $ adb shell am set-idle <packageName> false
  6. 观察唤醒的应用行为。确保应用从待机模式中正常恢复。具体而言,您应检查应用的通知和后台作业是否继续按预期运行。

自动备份应用和设备特定的标识符

如果您的应用在内部存储空间中保留任何设备专用标识符,例如 Google Cloud Messaging 注册 ID,请务必遵循最佳实践,将存储位置从自动备份中排除,如通过自动备份备份用户数据中所述。