将应用迁移到 Android 11

随着每个 Android 版本的发布,我们都会引入新功能以及旨在使 Android 更有用、更安全和性能更好的行为变更。在许多情况下,您的应用将按预期工作,而在其他情况下,您可能需要更改您的应用以适应平台变更。

由于用户可以在源代码发布到 AOSP(Android 开源项目)后立即开始接收新平台,因此应用做好准备非常重要,以便为用户提供预期的性能,理想情况下还可以利用新功能和 API 来充分利用新平台。

本文档提供了典型开发和测试阶段的高级概述,可以帮助您制定一个与平台发布时间表相一致的准备计划,并确保您的用户在 Android 11 上获得良好的体验。

典型的迁移有两个阶段,可以同时进行

  • 确保应用与 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 上按预期工作,并遵循隐私、性能、UX、数据处理和权限的最佳实践。如果发现问题,请尝试更新到最新版本的 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 上按预期工作,并遵循隐私、性能、UX、数据处理和权限的最佳实践。如果发现问题,请尝试更新到最新版本的 SDK,或联系 SDK 开发人员寻求帮助。

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

Android 11 为开发者引入了一项新功能,使您可以更轻松地使用目标行为变更测试应用。对于可调试应用,切换功能允许您

  • **在不实际更改应用的 targetSdkVersion 的情况下测试目标变更**。您可以使用切换功能强制启用特定目标行为变更,以评估其对现有应用的影响。
  • **仅将测试重点放在特定变更上**。切换功能允许您禁用所有目标变更(除了要测试的变更),而不是必须立即解决所有目标变更。
  • **通过 adb 管理切换**。您可以使用 adb 命令在自动化测试环境中启用和禁用可切换的变更。
  • **使用标准变更 ID 加快调试速度**。可切换的变更都具有唯一的 ID 和名称,您可以使用它们在日志输出中快速调试根本原因。

在准备更改应用的目标版本时,或在积极开发 Android 11 支持时,切换功能可以提供帮助。有关更多详细信息,请参阅相应的文档