将应用迁移到 Android 11

每次发布新的 Android 版本时,我们都会推出一些全新的功能并引入一些行为变更,目的就在于提高 Android 的实用性、安全性和性能。在许多情况下,您的应用都可以直接使用并完全按预期运行;而在其他的一些情况下,您可能需要对应用进行更改以适应这些平台变化。

源代码发布到 AOSP(Android 开源项目)后,用户马上就能开始使用新平台。因此,应用必须做好准备,让用户能够正常使用,最好还能利用新功能和 API 来充分利用新平台。

本文档简要介绍了典型的开发和测试阶段,可帮助您制定与平台发布时间表保持一致的准备计划,并确保您的用户在 Android 11 上获得良好的体验。

典型的迁移包含两个阶段,这两个阶段可以同时进行:

  • 确保应用兼容性(在 Android 11 最终发布前)
  • 针对新平台的功能和 API 调整应用(最终发布后尽快)

本页概述了其中的每一个阶段的一般步骤。准备好开始后,请阅读获取 Android 11

确保与 Android 11 兼容

您必须测试现有应用在 Android 11 上的运行情况,确保更新到最新版 Android 的用户获得良好的体验。有些平台变更可能会影响应用的行为方式,因此,必须尽早进行全面测试,然后对应用进行任何必要的调整。

通常,您可以调整应用并发布更新,而无需更改应用的 targetSdkVersion。同样,您也无需使用新的 API,也不需要更改应用的 compileSdkVersion,但这可能取决于应用的构建方式及其使用的平台功能。以下部分概述了相关步骤。

即使不更改应用的 targetSdkVersion,在开始之前,也请务必熟悉可能会影响您的应用的行为变更

执行兼容性测试

在大多数情况下,测试与 Android 11 的兼容性与您在准备发布应用时要执行的测试类型类似。这时有必要查阅核心应用质量指南测试最佳实践

只需在搭载 Android 11 的设备上安装您当前发布的应用,并完成所有流程和功能即可查找问题。为帮助您确定测试重点,请查看 Android 11 中引入的可能会影响应用功能或导致应用崩溃的行为变更。特别是,请务必查看关键隐私权变更,并测试为适应这些变更而实施的所有修复。

此外,请务必查看并测试受限非 SDK 接口的使用,并改为使用公共 SDK 或 NDK 等效项。留意突出显示这些访问权限的 logcat 警告,并使用 StrictMode 方法 detectNonSdkApiUsage() 以编程方式捕获它们。

最后,请务必全面测试应用中的库和 SDK,确保它们在 Android 11 上按预期运行,并遵循隐私权、性能、用户体验、数据处理和权限方面的最佳实践。如果您遇到问题,请尝试更新到最新版本的 SDK,或联系 SDK 开发者寻求帮助。

当您完成测试并进行更新后,我们建议您立即发布兼容的应用。这样可以尽早让您的用户测试应用,并帮助用户顺利过渡到 Android 11。

更新应用的目标平台并使用新 API 进行构建

按照上述说明发布应用的兼容版本后,下一步是通过更新 targetSdkVersion 并利用 Android 11 的新 API 和功能来添加对 Android 11 的全面支持。准备就绪后,您即可进行这些测试,请注意以新平台为目标平台的 Google Play 要求

当您计划全面支持 Android 11 时,请先查看适用于以 Android 11 为目标平台的应用的行为变更。这些针对性的行为变更可能会导致需要解决的功能问题。在某些情况下,它们可能需要大量开发工作,因此最好尽早了解它们。为帮助您评估影响,您还可以使用兼容性切换开关来测试已启用所选变更的当前应用。

以下步骤介绍了如何全面支持 Android 11。

获取 SDK,更改目标平台,使用新 API 进行构建

如需开始全面支持 Android 11,请先将 Android 11 SDK(以及所需的任何其他工具)下载到 Android Studio 中。接下来,将应用的 targetSdkVersioncompileSdkVersion 更改为 "30",然后重新编译应用。如需了解详情,请参阅设置指南

测试 Android 11 应用

编译应用并将其安装到搭载 Android 11 的设备上后,请开始测试,以确保应用能够在 Android 11 上正常运行。某些行为变更仅在应用以新平台为目标平台时才适用,因此您需要在开始之前查看这些变更

与基本兼容性测试一样,完成所有流程和功能以查找问题。将测试重点放在以 Android 11 为目标平台的应用的行为变更上。特别是,请务必查看隐私权变更,并测试为适应这些变更而实施的所有修复。您还可以根据核心应用质量指南测试最佳实践检查您的应用。

请务必查看并测试可能适用的受限非 SDK 接口的使用。留意突出显示这些访问权限的 logcat 警告,并使用 StrictMode 方法 detectNonSdkApiUsage() 以编程方式捕获它们。

最后,请务必全面测试应用中的库和 SDK,确保它们在 Android 11 上按预期运行,并遵循隐私权、性能、用户体验、数据处理和权限方面的最佳实践。如果您遇到问题,请尝试更新到最新版本的 SDK,或联系 SDK 开发者寻求帮助。

使用应用兼容性切换开关进行测试

Android 11 面向开发者引入了一项新功能,可让您更轻松地测试应用的针对性行为变更。对于可调试的应用,切换开关可让您:

  • 在不实际更改应用的 targetSdkVersion 的情况下测试有针对性的更改。您可以使用切换开关强制启用特定的针对性行为变更,以评估对现有应用的影响。
  • 仅针对特定变更进行测试。您可以使用切换开关停用除要测试的变更之外的所有针对性变更,而不必一次处理所有针对性变更。
  • 通过 adb 管理切换开关。您可以使用 adb 命令在自动化测试环境中启用和停用可切换的变更。
  • 使用标准变更 ID 更快地进行调试。每个可切换的变更都具有唯一 ID 和名称,可用于在日志输出中快速调试根本原因。

在您准备更改应用的目标平台时,或者在您积极开发以便支持 Android 11 时,切换开关将十分有用。如需了解详情,请参阅相应文档