Android开发经验谈Android技术知识Android开发

最新版发布!快扶我起来!Android 13 现已正式发布至 A

2022-08-16  本文已影响0人  不落魄Android开发

作者 / Seang Chau, VP of Engineering

今天,Android 13 的源代码推送至 Android 开源项目 (AOSP),并正式发布最新版本的 Android。对于开发者来说,Android 13 聚焦于核心主题,即隐私和安全,以及开发者生产力,帮助更轻松地为用户构建优良的体验。并且还会继续使 Android 成为更适合平板电脑和大屏幕设备的操作系统,为你提供更好的工具,让你得以充分利用世界各地正在广泛使用的 2.7 亿多台此类设备。

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

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

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

△ 设置中的单个应用语言选项

https://developer.android.google.cn/guide/topics/resources/app-languages#use-localeconfig

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

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 矢量表情符号 (左) 和位图表情符号

https://docs.microsoft.com/en-us/typography/opentype/spec/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

https://developer.android.google.cn/reference/android/service/quicksettings/TileService

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

https://developer.android.google.cn/reference/android/graphics/RuntimeShader

https://developer.android.google.cn/guide/topics/graphics/agsl

https://cs.android.com/android/platform/superproject/+/master:frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java;l=24?q=RippleShader&sq=

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

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 媒体控件在手机和平板电脑上保持一致

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

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

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

△ Android 13 中的通知权限对话框

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

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

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

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-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/

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

https://developer.android.google.cn/about/versions/13/get

这里列出一些需要注意的变更:

https://developer.android.google.cn/about/versions/13/changes/notification-permission

https://developer.android.google.cn/about/versions/13/behavior-changes-all#copy-sensitive-content

https://developer.android.google.cn/about/versions/13/behavior-changes-all#prefetch-job-handling

https://developer.android.google.cn/reference/android/app/job/JobScheduler

别忘了测试应用中的开发库和 SDK 的兼容性。如果你在测试中发现 SDK 存在问题,请尝试更新 SDK 到最新版本,或向其开发者寻求帮助。

一旦你发布了当前应用的兼容版本,就可以开始更新应用的 targetSdkVersion。可以查阅行为变更清单 (针对面向 Android 13 的应用),并使用兼容性框架工具来快速检测问题。

https://developer.android.google.cn/preview/migration#setup_sdk

https://developer.android.google.cn/distribute/best-practices/develop/target-sdk

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 合作伙伴的大屏幕设备上进行测试。

https://developer.android.google.cn/about/versions/13/get#on_emulator

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 分支里获取。

https://developers.google.cn/android/images

https://source.android.google.cn/

https://android.googlesource.com/?format=HTML

上一篇下一篇

猜你喜欢

热点阅读