作者 / Seang Chau, VP of Engineering
今天,Android 13 的源代码推送至 Android 开源项目 (AOSP),并正式发布最新版本的 Android。对于开发者来说,Android 13 聚焦于核心主题,即隐私和安全,以及开发者生产力,帮助更轻松地为用户构建优良的体验。并且还会继续使 Android 成为更适合平板电脑和大屏幕设备的操作系统,为你提供更好的工具,让你得以充分利用世界各地正在广泛使用的 2.7 亿多台此类设备。
- Android 开源项目
https://source.android.google.cn/
- 适用于大屏设备开发的响应式布局
https://developer.android.google.cn/large-screens
Android 13 自即日起会推送至 Pixel 设备。今年晚些时候,Android 13 也会推送至其他你喜爱的设备,包括三星 Galaxy、华硕、HMD (诺基亚手机)、iQOO、摩托罗拉、一加、OPPO、真我、夏普、索尼、TECNO、vivo、小米等。
一、Android 13 为开发者带来了什么?
Android 13 带来的更新内容众多,下文只是精选的一部分。可以前往 Android 13 开发者网站了解所有新功能的详细信息:
https://developer.android.google.cn/13
1.1 开发者生产力和工具
主题应用图标 - Android 13 将 Material You 的动态颜色扩展到了所有应用图标,让用户可以基于其壁纸和其他主题偏好来选择图标色调。你的应用仅需提供一个单色的应用图标,并对自适应图标 XML 进行一些调整即可。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#themed-app-icons
- 图标规格
按应用设定语言偏好 - Android 13 可以让应用使用不同于系统语言的其他语言,以更好地满足多语言用户的需求。Android 现在为应用提供了一个标准的 "应用语言" 设置面板 (如果应用选择支持此功能),你还可以调用一个新的平台 API,在运行时获取或设置用户的首选语言区域,从而减少模板代码并提高兼容性。可以访问官方文档了解详细信息:
https://developer.android.google.cn/guide/topics/resources/app-languages
- 使用 android:localeConfig 将受支持的语言添加到手机设置中
https://developer.android.google.cn/guide/topics/resources/app-languages#use-localeconfig
- LocaleManager
https://developer.android.google.cn/reference/android/app/LocaleManager
改进的文本支持 - Android 13 针对文本和语言提供了多项改进,帮助你打造更加完美的体验。更快的断字将断字性能优化了多达 200%,因此现在可以在 TextView 中启用此功能,这几乎不影响渲染性能。通过使用文本转换 API,能让中文、日文等需要使用拼音输入的语言在执行搜索和自动完成等功能时的速度更快。Android 13 还改善了非拉丁文字 (如泰米尔语、缅甸语、泰卢固语和藏语等) 的行高,让字符免于被裁切且更加易于阅读。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#language-support
- 更快的断字
https://developer.android.google.cn/about/versions/13/features#faster-hyphenation
- 文本转换 API
https://developer.android.google.cn/about/versions/13/features#text-conversion
- 改进了非拉丁字母的行高
https://developer.android.google.cn/about/versions/13/features#line-height
彩色矢量字体 - Android 13 增加了对 COLR 版本 1 (可以参考详细规格和介绍视频) 字体的渲染支持,并将系统表情符号更新为 COLRv1 格式。COLRv1 是一种新的、高度紧凑的字体格式,在任何尺寸下都能快速清晰地渲染。对于大多数应用,这项修改完全无法被感知到,系统会自动处理好一切。可以在 Chrome 发布公告中了解更多关于 COLRv1 的信息:
https://developer.chrome.com/blog/colrv1-fonts/
- COLR 规格
https://docs.microsoft.com/en-us/typography/opentype/spec/colr
- COLR 介绍视频
https://www.youtube.com/watch?v=BmqYm5Wwz8M
快捷设置放置 API - 对于提供自定义快捷设置 (Quick Settings) 图块的应用,Android 13 能让用户更容易发现和添加你的图块。借助新的图块放置 API,你的应用现在可以让用户通过对话框直接添加您的自定义快捷设置图块,而且只需一步即可完成操作,不需要离开你的应用。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#quick-settings
- TileService
https://developer.android.google.cn/reference/android/service/quicksettings/TileService
- 图块放置 API
可编程着色器 (shader) - Android 13 引入了可编程 RuntimeShader 对象,其行为使用 Android 图形着色语言 (Android Graphics Shading Language, AGSL) 定义。你可以使用这些着色器在自己的应用中实现波纹、模糊和过度滚动拉伸,以及类似的高级效果。可以访问官方文档了解详细信息:
https://developer.android.google.cn/guide/topics/graphics/agsl
- RuntimeShader
https://developer.android.google.cn/reference/android/graphics/RuntimeShader
- Android 图形着色语言
https://developer.android.google.cn/guide/topics/graphics/agsl
- 波纹 (Ripple)
- 模糊 (Blur)
- 过度滚动拉伸 (Stretch)
基于 PlaybackState 的媒体控件 - 对于以 Android 13 为目标平台的应用,系统基于 PlaybackState 操作清单实现了更丰富的媒体控件,从而在手机和平板电脑等设备类型上获得更佳的一致性,并和 Android Auto 和 Android TV 等其他 Android 平台保持一致。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/behavior-changes-13#playback-controls
- PlaybackState
https://developer.android.google.cn/reference/android/media/session/PlaybackState
蓝牙低功耗 (LE) 音频 - 低功耗 (Low Energy, LE) 音频是用于实现新的用例的下一代无线音频。用户可以通过它与朋友和家人分享和广播自己的音频,或订阅公共广播以获得信息、娱乐或无障碍辅助信息。它旨在确保用户能够在不牺牲电池寿命的情况下接收高保真音频,并在不同用例之间无缝切换。Android 13 增加了对低功耗音频的内置支持,开发者们可在兼容的设备上使用这项新功能。可以访问官方文档了解详细信息:
https://developer.android.google.cn/reference/android/bluetooth/BluetoothLeAudio
- 低功耗 (LE) 音频
https://www.bluetooth.com/learn-about-bluetooth/recent-enhancements/le-audio/resources/
MIDI 2.0 - Android 13 增加了对新的 MIDI 2.0 标准的支持,包括通过 USB 连接 MIDI 2.0 硬件的能力。这个更新的标准提供了一些新功能,如更高的控制器分辨率,更好地支持非西方音调,以及通过单一音符控制器提供更佳的表现力。可以访问官方文档了解详细信息:
- 新的 MIDI 2.0 标准
https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange
OpenJDK 11 更新 - Android 13 核心库已经与 OpenJDK 11 LTS 版本保持一致,为应用和平台开发者提供库更新和 Java 11 编程语言支持。作为对 Android 12 及以上设备的 ART 模块更新的一部分,计划通过 Google Play 系统更新将这些核心库的变更发布至更多设备。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#core-libraries
预测性返回手势 - Android 13 引入了新的 API,可让你的应用告诉系统它将提前处理返回事件,称之为 "提前" 模型。这个新方案会需要若干年来完善,以帮助你的应用程序支持预测性返回手势,该功能现在可通过开发者选项在当前版本中进行测试。可以访问官方文档了解详细信息:
https://developer.android.google.cn/guide/navigation/predictive-back-gesture
- 让系统返回操作回归本源
https://io.google/2022/program/5c6a8dbb-7ac2-4c31-a707-0a16e8424970/
1.2 为平板电脑而生
Android 13 进一步拓展了今年早些时候发布的 Android 12L 功能更新,在平板电脑上提供了更好的体验。强化了一些功能,包括针对多任务操作改进过的任务栏,更多针对大屏幕的布局,以及针对系统界面和应用进行了许多优化,应用兼容模式也得到了改进,等等。将继续投入资源为你打造工具,帮助你为平板电脑、Chromebook 和可折叠设备构建优良的体验。你可以通过大屏幕使用入门开始上手,也请务必浏览准备的大屏幕开发者资源。
- 大屏幕使用入门
https://developer.android.google.cn/guide/topics/large-screens/get-started-with-large-screens
- 适用于大屏幕设备开发的响应式布局
https://developer.android.google.cn/large-screens
1.3 隐私和安全
照片选择器和 API - 全新的系统照片选择器为用户分享本地和云端照片提供了标准且私密的方式。照片选择器针对 Android 上长期使用的文档选择器进行了扩展,使用户可以很容易地与应用分享特定的照片和视频,而无需授权应用查看设备上的所有媒体文件。照片选择器为照片和视频提供了专门的体验,并提供了供应用访问共享媒体文件的 API。Android 11 及以上系统设备 (Go 设备除外) 的用户会通过 Google Play 系统更新获得照片选择器功能。可以访问官方文档了解详细信息:
https://developer.android.google.cn/training/data-storage/shared/photopicker
通知权限 - 为了帮助用户专注于对他们最重要的通知,Android 13 引入了一个新的通知运行时权限。现在应用需要在发送通知之前向用户申请通知权限。对于以 Android 12 或更低版本为目标平台的应用,系统将代你处理升级流程。可以访问官方文档了解详细信息:
https://developer.android.google.cn/guide/topics/ui/notifiers/notification-permission
- POST_NOTIFICATIONS
https://developer.android.google.cn/reference/android/Manifest.permission#POST_NOTIFICATIONS
针对附近 Wi-Fi 设备的权限 - Android 13 为管理设备与周围 Wi-Fi 热点连接的应用引入了新的 NEARBY_WIFI_DEVICES 运行时权限。许多常用的 Wi-Fi API 都需要这个新权限,从而让应用在不需要获得定位权限的情况下即可通过 Wi-Fi 发现并连接到附近的设备。可以访问官方文档了解详细信息:
https://developer.android.google.cn/guide/topics/connectivity/wifi-permissions
- NEARBY_WIFI_DEVICES
https://developer.android.google.cn/reference/android/Manifest.permission.html#NEARBY_WIFI_DEVICES
细化的媒体权限 - 在分享照片和视频时,照片选择器现在是我们推荐的解决方案,它更加用户友好,且无需请求权限。但对于尚未使用照片选择器的应用,或者需要访问音频文件的场景,Android 13 也增加了新的更细化的媒体权限。这些媒体权限用以取代 READ_EXTERNAL_STORAGE 权限,让应用得以访问特定的媒体文件类型,包括图片、视频和音频。强烈建议你在条件允许时使用照片选择器方案,当应用以 Android 13 为目标平台且不适合使用该方案时,则推荐使用细化的媒体权限。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/behavior-changes-13#granular-media-permissions
- 照片选择器
https://developer.android.google.cn/training/data-storage/shared/photopicker
- READ_EXTERNAL_STORAGE
https://developer.android.google.cn/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE
开发者可降级权限 - 从 Android 13 开始,如果应用不再需要某些之前由用户授予过的权限,可以通过新的 API 来降级权限。通过移除不再使用的权限,你的应用可以向用户表明其只使用了必需的最少权限,从而提高用户信任度。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#developer-downgradable-permissions
- revokeOwnPermissionsOnKill
更安全的导出 Intent 过滤器 - 在向以 Android 13 为目标平台的其他应用的导出 intent 过滤器发送显式 intent 时,Android 13 给出了更严格的规则。如果 intent 指定了动作,则系统只在该 intent 与接收应用中声明的 <intent-filter> 元素匹配时才会向导出组件传递 intent。可以访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/behavior-changes-13#intent-filters
1.4 应用性能
Android 13 通过对 ART 运行时的更新,提高了所有应用的性能和效率。官方正在为 Android 12 及以上设备更新 ART 模块,作为此项更新的一环,也会通过 Google Play 系统更新将这些性能改进带给更多的 Android 用户。
垃圾回收改进 - 一个基于 Linux 内核功能 userfaultfd 的新垃圾回收器会随着即将到来的 Google Play 系统更新加入 Android 13 设备的 ART。新的垃圾回收器消除了读取障碍,降低了每个对象加载的开销,减少了内存压力,使得编译后的代码体积能减少约 10%。它在 GC 时间也更高效,因为分页会随着压缩的进行而被释放。总而言之,新的垃圾回收器有助于节省电量,避免在 GC 过程中出现卡顿,以及让应用免于在低内存时被强行终止。
遍及整个 ART 的优化 - 在 Android 13 中,ART 让切换到本地代码的速度更快,反之亦然,现在 JNI 调用的速度可达之前的 2.5 倍。还重新设计了运行时的引用处理,使其基本处于非阻塞状态,这进一步减少了卡顿。公开了一个新的公共 API,Reference.refersTo(),让你可以尽快回收无法抵达的对象,还优化了类/方法的查找,从而让解释器的运行更快。最后,ART 现在在安装时会执行更多的字节码验证,避免了在运行时验证的损耗,从而让应用能快速启动。可以观看应用性能更新介绍了解详细信息:
https://io.google/2022/program/2cf473b7-113e-4332-a469-8dfd815eb45b/
- Reference.refersTo()
https://developer.android.google.cn/reference/java/lang/ref/Reference.html#refersTo(T)
二、让你的应用做好准备!
随着今天 Android 13 正式发布至 AOSP,官方要求所有的 Android 开发者完成兼容性测试,并尽快发布更新,从而让你的用户能顺利过渡至 Android 13。
只需在运行 Android 13 的设备上安装您的应用,即可开始测试其兼容性。测试应用的所有流程,找出功能或用户界面中暴露的问题。通过 Android 13 行为变更清单 (针对所有应用) 来确定可能会影响到应用的变更:
https://developer.android.google.cn/about/versions/13/behavior-changes-all
- 获取 Android 13
https://developer.android.google.cn/about/versions/13/get
这里列出一些需要注意的变更:
- 通知的运行时权限 - 务必了解新的权限在你的应用发送通知时的工作机制,并尽快开始规划针对 Android 13 (API 33) 的相关工作,以让用户获得良好的体验。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/changes/notification-permission
- 剪贴板预览 - 请确保你的应用在 Android 13 全新的剪贴板预览中隐藏敏感数据,比如密码或信用卡信息。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/behavior-changes-all#copy-sensitive-content
- JobScheduler 预提取 - JobScheduler 现在会预测你下次启动应用的时机,并提前运行关联的预提取作业。如果你有使用预提取作业,请通过测试确保它们工作正常。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/behavior-changes-all#prefetch-job-handling
- JobScheduler
https://developer.android.google.cn/reference/android/app/job/JobScheduler
别忘了测试应用中的开发库和 SDK 的兼容性。如果你在测试中发现 SDK 存在问题,请尝试更新 SDK 到最新版本,或向其开发者寻求帮助。
一旦你发布了当前应用的兼容版本,就可以开始更新应用的 targetSdkVersion。可以查阅行为变更清单 (针对面向 Android 13 的应用),并使用兼容性框架工具来快速检测问题。
- 开始更新: 更新应用的目标平台并使用新 API 进行构建
https://developer.android.google.cn/preview/migration#setup_sdk
- targetSdkVersion: 符合 Google Play 的目标 API 级别要求
https://developer.android.google.cn/distribute/best-practices/develop/target-sdk
- 行为变更清单: 以 Android 13 或更高版本为目标平台的应用
https://developer.android.google.cn/about/versions/13/behavior-changes-13
- 兼容性框架工具
https://developer.android.google.cn/guide/app-compatibility/test-debug
2.1 对平板电脑和大屏幕设备的支持
Android 13 为平板电脑带来了更好的体验,请确保你的应用能活用这项优势。你可以通过在 Android Studio 中设置 Android 模拟器来测试大屏幕设备相关的功能,或者在官方的 Android 13 Beta 合作伙伴的大屏幕设备上进行测试。
- 设置 Android 模拟器
https://developer.android.google.cn/about/versions/13/get#on_emulator
- Android 13 Beta 支持设备
https://developer.android.google.cn/about/versions/13/features/large-screens#large-screen-partners
以下是一些测试时的注意点:
- 任务栏交互 - 请检查你的应用在大屏幕上配合新任务栏时的交互情况,确保应用的界面没有被任务栏裁切或遮挡。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/features/large-screens#multitasking
- 多窗口模式 - 无论应用配置如何,所有的应用现在默认启用多窗口模式,所以请确保应用妥善处理分屏显示。你可以通过拖放将您的应用切换至分屏模式,并调整窗口大小来进行测试。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/features/large-screens#dev-test-splitscreen
- 改进的兼容性体验 - 如果你的应用尚未针对平板电脑进行优化,比如使用固定的朝向、不支持缩放等,请检查你的应用在兼容模式下的表现 (如信箱模式)。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/features/large-screens#compatibility
- 媒体投影 - 如果你的应用使用了媒体投影功能,请检查你的应用在媒体播放、串流,以及在大屏幕设备上投影时的情况。别忘了针对可折叠设备的状态切换进行适配。可以访问官方文档了解更多:
https://developer.android.google.cn/about/versions/13/features/large-screens#media-projection
- 相机预览 - 针对相机应用,请检查相机预览界面在大屏幕设备的多窗口模式或分屏模式中,应用被限制在屏幕的局部区域时的表现。同样也别忘了针对可折叠设备的状态切换进行适配。可以访问官方文档了解更多:
https://developer.android.google.cn/training/camera2/camera-preview
可以前往官方网站了解更多 Android 13 平板电脑特性以及测试要点:
https://developer.android.google.cn/about/versions/13/features/large-screens
三、下一步
Android 13 自即日起会推送至 Pixel 设备。
如果你已经参加了 Android Beta 版测试,你将会自动获得 Android 13 的正式版,并会在后续的 Android 13 功能更新 (今年晚些发布) 中继续获得这些功能的 Beta 版更新。如果你不想继续接收 Beta 版更新且不希望刷写自己的设备,请在获取完 Android 13 正式版后,并在 Android 13 的第一个功能更新 Beta 版发布之前在 Android Beta 测试站点退出测试即可:
https://www.google.com/android/beta
适用于 Pixel 设备的系统映像已经发布,你可以下载并刷入设备。也可以通过 Android Studio 的 SDK 管理器获得最新的 Android 模拟器系统映像。如果需要 Android 13 的源代码,可以在 Android 开源项目 (AOSP) repo 里的 Android 13 分支里获取。
- Android 系统映像
https://developers.google.cn/android/images
- Android 开源项目
https://source.android.google.cn/
- Android 源代码