在这里插入图片描述

Android 13 的源代码推送至 Android 开源项目 (AOSP),并正式发布最新版本的 Android。对于开发者来说,Android 13 聚焦于我们的核心主题,即隐私和安全,以及开发者生产力,帮助您更轻松地为用户构建优良的体验。

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

开发者生产力和工具

主题应用图标 - Android 13 将 Material You 的动态颜色扩展到了所有应用图标,让用户可以基于其壁纸和其他主题偏好来选择图标色调。您的应用仅需提供一个单色的应用图标,并对自适应图标 XML 进行一些调整即可。请访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/features#themed-app-icons

在这里插入图片描述

基于壁纸颜色和深色主题 (左) 改变色调的主题应用图标

图标规格
https://developer.android.google.cn/guide/practices/ui_guidelines/icon_design_adaptive#design-adaptive-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

在这里插入图片描述

以 Android 13 为目标平台的应用中的非拉丁文字行高改进效果 (下)

更快的断字
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/

在这里插入图片描述

COLRv1 矢量表情符号 (左) 和位图表情符号

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
https://developer.android.google.cn/reference/android/app/StatusBarManager#requestAddTileService(android.content.ComponentName,%20java.lang.CharSequence,%20android.graphics.drawable.Icon,%20java.util.concurrent.Executor,%20java.util.function.Consumer%3Cjava.lang.Integer%3E)

可编程着色器 (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)
https://cs.android.com/android/platform/superproject/+/master:frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java;l=24?q=RippleShader&sq=

模糊 (Blur)
https://cs.android.com/android/platform/superproject/+/master:frameworks/native/libs/renderengine/skia/filters/BlurFilter.cpp?q=RuntimeShader&ss=android%2Fplatform%2Fsuperproject&start=21

过度滚动拉伸 (Stretch)
https://cs.android.com/android/platform/superproject/+/master:frameworks/base/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java?q=RuntimeShader&ss=android%2Fplatform%2Fsuperproject&start=11

基于 PlaybackState 的媒体控件 - 对于以 Android 13 为目标平台的应用,系统基于 PlaybackState 操作清单实现了更丰富的媒体控件,从而在手机和平板电脑等设备类型上获得更佳的一致性,并和 Android Auto 和 Android TV 等其他 Android 平台保持一致。请访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/behavior-changes-13#playback-controls

在这里插入图片描述

Android 13 媒体控件在手机和平板电脑上保持一致

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 硬件的能力。这个更新的标准提供了一些新功能,如更高的控制器分辨率,更好地支持非西方音调,以及通过单一音符控制器提供更佳的表现力。请访问官方文档了解详细信息:
https://developer.android.google.cn/reference/android/media/midi/MidiDeviceInfo#PROTOCOL_UMP_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/

为平板电脑而生

Android 13 进一步拓展了我们今年早些时候发布的 Android 12L 功能更新,在平板电脑上提供了更好的体验。强化了一些功能,包括针对多任务操作改进过的任务栏,更多针对大屏幕的布局,以及针对系统界面和应用进行了许多优化,应用兼容模式也得到了改进,等等。

大屏幕使用入门
https://developer.android.google.cn/guide/topics/large-screens/get-started-with-large-screens

适用于大屏幕设备开发的响应式布局
https://developer.android.google.cn/large-screens

隐私和安全

照片选择器和 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

在这里插入图片描述

Android 13 中的通知权限对话框

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
https://developer.android.google.cn/reference/android/content/Context.html#revokeOwnPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3E)

更安全的导出 Intent 过滤器 - 在向以 Android 13 为目标平台的其他应用的导出 intent 过滤器发送显式 intent 时,Android 13 给出了更严格的规则。如果 intent 指定了动作,则系统只在该 intent 与接收应用中声明的 元素匹配时才会向导出组件传递 intent。请访问官方文档了解详细信息:
https://developer.android.google.cn/about/versions/13/behavior-changes-13#intent-filters

应用性能

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)

注:以上内容转载自谷歌开发者公众号

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐