查看原文
其他

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

Android 谷歌开发者 2020-09-19


作者 / Android 产品经理 Diana Wong


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


Android 11 兼容性


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


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


  • 官方网站
    https://developer.android.google.cn/11weeksofandroid



更轻松实现应用与 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 框架,感谢向我们提出这些需求的开发者!


  • targetSdkVersion
    https://developer.android.google.cn/distribute/best-practices/develop/target-sdk
  • 受限制的非 SDK 接口列表
    https://developer.android.google.cn/preview/non-sdk-11
  • 发出公共 API 替代品的开发需求
    https://developer.android.google.cn/distribute/best-practices/develop/restrictions-non-sdk-interfaces#feature-request
  • Resource Loader 框架
    https://developer.android.google.cn/reference/android/content/res/loader/package-summary.html


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


在 Android 11 上测试


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

  • 如何确定应用中可能受影响的区域?

  • 是否应该通过更改 targetSDKVersion来进行测试?如何用最简单的方法实现?

  • 在开始测试后,如何规避可能引起故障的问题?

  • 在针对最新版本的 Android 进行开发和测试时,如何确认您的应用能继续在其他类型不同且 API 级别较低的设备上无差别体验?


  • targetSDKVersion

    https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element#target


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


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


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


  • 兼容性框架

    https://developer.android.google.cn/preview/test-changes


什么是兼容性框架?

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


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


选择要测试的变更

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


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


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


  • 行为变更列表
    https://developer.android.google.cn/preview/test-changes#list
  • 影响所有应用的行为变更
    https://developer.android.google.cn/preview/behavior-changes-all
  • 后台位置访问变更
    https://developer.android.google.cn/preview/privacy/location#background-location

单独测试变更

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

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

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


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

  • 识别已启用的变更

    https://developer.android.google.cn/preview/test-changes#identify

  • 使用 ADB 切换变更的启用/停用状态

    https://developer.android.google.cn/preview/test-changes#toggle-adb


测试和调试应用

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


更多资讯

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


  • 测试 Android 11 中平台变更视频

    https://youtu.be/82einkyFns4

  • 官方文档

    https://developer.android.google.cn/test-android11



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


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


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

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

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


  • 使用 Android Studio 测试应用兼容性视频

    https://www.youtube.com/watch?v=GM7CXRJKpEI&list=PLWz5rJ2EKKc-Rkjav7zN93x4gJPOruB26&index=3

  • 官方文档

    https://developer.android.google.cn/studio/preview/features#instrumentation-testing



更多精彩


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


  • 向我们发送反馈

    https://google.qualtrics.com/jfe/form/SV_9HOzzyeCIEw0ij3?Source=compatibility-framework-tools




推荐阅读






 点击屏末 | 阅读原文 | 即刻前往官方网站详细了解每期主题



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存