聚焦 Android 11: Android 11 应用兼容性
Android 11 兼容性
本期我们将重点探讨 Android 11 兼容性这一对所有开发者都非常重要的主题。对于 Android,应用兼容性一词指应用可以在特定版本的 Android (通常是最新版本) 上正常运行。
您可以前往官方网站详细获取可帮助您进行兼容性测试的资源,以及本期所有关于该领域的实用内容和资源!
官方网站 https://developer.android.google.cn/11weeksofandroid
更轻松实现应用与 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 新版本可能面临很多挑战,尤其是应用在受到多个平台变更影响的情况下。此过程中可能会出现很多问题:
如何确定应用中可能受影响的区域?
是否应该通过更改 targetSDKVersion,来进行测试?如何用最简单的方法实现?
在开始测试后,如何规避可能引起故障的问题?
在针对最新版本的 Android 进行开发和测试时,如何确认您的应用能继续在其他类型不同且 API 级别较低的设备上无差别体验?
targetSDKVersion
https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element#target
适于测试平台变更的新工具
兼容性框架
https://developer.android.google.cn/preview/test-changes
您可以使用全新开发者工具,针对包含在兼容性框架内的变更对应用进行测试和调试。
例如,我们已将包含在兼容性框架内的变更设为可切换,您可以通过设备的开发者选项或使用 Android ADB 强制启用或停用单个变更。Android 平台会自动调整内部 API 逻辑,因此您无需更改 targetSDKVersion 或重新编译应用,即可执行基本测试。此外,您可以隔离各项变更,从而节省发现和调试应用中问题所需的时间。
选择要测试的变更
在切换变更的启用/停用状态之前,您应该通读行为变更列表,确定哪些变更可能会影响您的应用。包含在兼容性框架内的变更已在变更描述前列出相应的 Change ID 和 Change Name。
一般来说,我们建议您从影响所有应用的行为变更开始测试,因为无论 targetSDKVersion 如何,这些变更都可能对您的应用造成影响。我们用下面这个 targetSDKVersion 控制的变更为例,说明您可以如何在不使用其他 targetSDK 重编译应用的情况下,对这些变更进行测试。
行为变更列表 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 是唯一已启用的变更,旨在最大程度缩小应用可能遇到的各种问题的原因范围。
识别已启用的变更
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 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
更多精彩
向我们发送反馈
https://google.qualtrics.com/jfe/form/SV_9HOzzyeCIEw0ij3?Source=compatibility-framework-tools
推荐阅读