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

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

作者 / 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 应用兼容情况。

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io Funder | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.
🍗