聚焦 Android 11: Android 11 应用兼容性

2,367 阅读7分钟

作者 / Android 产品经理 Diana Wong

在往期  #11WeeksOfAndroid  系列文章中我们介绍了 联系人和身份 隐私和安全 ,本期将聚焦  Android 11 兼容性 。我们将为大家陆续带来 #11WeeksOfAndroid 内容,深入探讨 Android 的各个关键技术点,您不会错过任何重要内容。

Android 11 兼容性

本期我们将重点探讨 Android 11 兼容性这一对所有开发者都非常重要的主题。对于 Android, 应用兼容性 一词指应用可以在特定版本的 Android (通常是最新版本) 上正常运行。

您可以前往官方网站详细获取可帮助您进行兼容性测试的资源,以及本期所有关于该领域的实用内容和资源!

更轻松实现应用与 Android 11 兼容

在每次版本更新中,我们都希望尽量减少应用适配 Android 所需的工作。在 Android 11 中,我们添加了新的流程、开发者工具和版本发布里程碑,以帮助我们最大程度地减少平台更新带来的影响,更轻松实现应用的兼容性。

  • 最大限度地降低行为变更影响 : 我们的目标始终如一,即在您将应用的 targetSdkVersion 设置为 Android 11 之前,尽可能将这些变更设置为可选项,最大程度减少平台变更对应用带来的影响。如果您通过 Google Play 分发应用,则将有一年以上的时间逐渐适用这些变更。

  • 更轻松的测试和调试 : 为了帮助您测试兼容性,我们将许多非兼容性变更设置为 "可关闭"。这意味着,您可以通过开发者选项或 adb 强制启用或禁用每一项更改。这样就无需为了一些基本测试而更改 targetSdkVersion 或重新编译您的应用。我们也简化了 Android Studio 自动化测试的流程。

  • 对非 SDK 接口的限制 : 为了帮助开发者逐步弃用非 SDK API,我们不断努力,更新了 受限制的非 SDK 接口列表。一如既往,欢迎您提出反馈,并 发出公共 API 替代品的开发需求

  • 动态资源加载器 : 在开发者们移除非 SDK 接口调用的同时,我们听到了来自 卓盟科技 等开发者的一个需求: 提供一个公开 API 来在运行时动态加载资源和素材。现在,我们在 Android 11 中添加了 Resource Loader 框架,感谢向我们提出这些需求的开发者!

请继续阅读,详细了解我们如何简化 Android 11 中的应用测试和调试流程。

在 Android 11 上测试

测试应用是否兼容 Android 新版本可能面临很多挑战,尤其是应用在受到多个平台变更影响的情况下。此过程中可能会出现很多问题:

  • 如何确定应用中可能受影响的区域?
  • 是否应该通过更改 targetSDKVersion,来进行测试?如何用最简单的方法实现?
  • 在开始测试后,如何规避可能引起故障的问题?
  • 在针对最新版本的 Android 进行开发和测试时,如何确认您的应用能继续在其他类型不同且 API 级别较低的设备上无差别体验?

开发者社区为我们提供了大量相关问题的优质反馈。在 Android 11 中,我们为平台添加了以下新工具,并在 Android Studio 中添加了新功能,因此您可以更加轻松的进行测试。

适于测试平台变更的新工具

和往年的更新一样,Android 11 的一些平台变更可能会影响您的应用。尽管这些变更对于提升平台性能至关重要,但我们会尽可能将这些变更安排在平台的最新 targetSDKVersion 之后,以便减少对您的应用的直接改动。在 Android 11 中,我们还会将更多此类平台变更添加到新的 兼容性框架 中。

什么是兼容性框架?

您可以使用全新开发者工具,针对包含在兼容性框架内的变更对应用进行测试和调试。

例如,我们已将包含在兼容性框架内的变更设为可切换,您可以通过设备的开发者选项或使用 Android ADB 强制启用或停用单个变更。Android 平台会自动调整内部 API 逻辑,因此您无需更改 targetSDKVersion 或重新编译应用,即可执行基本测试。此外,您可以隔离各项变更,从而节省发现和调试应用中问题所需的时间。

选择要测试的变更

在切换变更的启用/停用状态之前,您应该通读 行为变更列表,确定哪些变更可能会影响您的应用。包含在兼容性框架内的变更已在变更描述前列出相应的 Change ID 和 Change Name。

一般来说,我们建议您从 影响所有应用的行为变更 开始测试,因为无论 targetSDKVersion 如何,这些变更都可能对您的应用造成影响。我们用下面这个 targetSDKVersion 控制的变更为例,说明您可以如何在不使用其他 targetSDK 重编译应用的情况下,对这些变更进行测试。

后台位置访问变更 中,请求始终在后台访问位置的应用会受影响。如果您的应用受到这一变更的影响,那么从该变更开始测试是不错的选择。此变更的名称为 BACKGROUND_RATIONALE_CHANGE_ID,变更 ID 为 147316723。您需要先使用这些信息启用此变更,然后再测试应用因此受到的影响。

单独测试变更

确定要测试的变更后,您可以使用开发者选项切换此变更的启用/停用状态。如要使用开发者选项,请打开设备上的 "设置" 应用,导航至 系统 > 高级 > 开发者选项 > 应用兼容性变更

开发者选项中可切换的平台变更,后台位置访问变更已启用

在本例中,BACKGROUND_RATIONALE_CHANGE_ID 是唯一已启用的变更,旨在最大程度缩小应用可能遇到的各种问题的原因范围。

您也可以使用 Logcat 或 ADB 识别已启用的变更,或 使用 ADB 切换变更的启用/停用状态。请注意,您只能在使用可调试应用时切换变更。

测试和调试应用

启用变更后,您可以使用常用的测试工作流来测试和调试应用。如遇到问题,请查看日志,确定问题的原因。如果不确定问题是否由已启用的平台变更引起,您可以尝试停用此变更,然后重新测试应用的同一模块。

更多资讯

如需了解其他相关示例,您可以观看有关 测试 Android 11 中平台变更的视频,或阅读 官方文档

Android Studio 中用于测试应用兼容性的新工具

除了在新平台上手动进行测试外,我们还简化了使用 Android Studio 在最新 Android 系统上运行自动化测试的流程。

从 Android Studio 4.2 开始,我们实现了在多个实体或虚拟设备上并行运行插桩测试 (instrumentation tests)。现在,您可以在运行测试的过程中,从目标设备下拉菜单中选择 多个设备

此功能旨在帮助您在开发周期中尽早发现问题,并让您能够比较不同 Android 设备之间的差异。您可以使用 视图 > 工具窗口 > 运行 下的新 测试矩阵 ,研究这些测试的结果。

新测试矩阵可按状态、设备和 API 级别过滤测试结果

新测试矩阵可按状态、设备和 API 级别过滤测试结果。

更多资讯

请观看有关 使用 Android Studio 测试应用兼容性的视频,或阅读 官方文档

更多精彩

我们建议您尝试这些新工具,并 向我们发送反馈,告诉我们这些工具对您是否有用。我们希望这些工具能帮助您更轻松地测试 Android 11 应用兼容情况。