功能和 API 概览

Android 13 面向开发者引入了一些出色的新功能和 API。以下几部分内容可帮助您了解适用于您的应用的功能并开始使用相关 API。

有关新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档 - 新 API 会突出显示以方便查看。此外,如需了解平台变更可能会在哪些方面影响您的应用,请务必查看会影响以 Android 13 为目标平台的应用和所有应用的 Android 13 行为变更。

开发者工作效率

带主题的应用图标

用户正在选择启用带主题的应用图标
从 Android 13 起,用户可以选择启用带主题的应用图标。借助此功能,用户可以调节受支持的 Android 启动器中应用图标的色调,以继承所选壁纸和其他主题的配色。

如需支持此功能,您的应用必须提供单色应用图标,并通过清单中的 元素指向该图标。如果用户在其设备上启用了带主题的图标切换开关,系统会使用用户所选壁纸和主题的配色来确定色调颜色,然后该颜色将用于单色应用图标。

如果您的应用未提供单色图标,但用户启用了带主题的图标切换开关,主屏幕上将会显示应用图标的标准版本。

规格

您的单色应用图标应符合以下规范:

它应该是 VectorDrawable。
我们建议该徽标适合 90x90 dp 容器中的 36x36 dp 的区域内。如果需要更大尺寸的徽标,最大可以为 60x60 dp。
我们建议您使用平面徽标;如果您的徽标是三维的,那么您可以使用 Alpha 渐变。
大多数应用都可以重复使用用于通知的矢量可绘制对象。

实现带主题的应用图标
将 monochrome android:drawable 属性添加到 元素中。例如,在 res/mipmap-anydpi-v26/ic_launcher.xml 中:

<adaptive-icon ><background android:drawable="..." /><foreground android:drawable="..." /><monochrome android:drawable="@drawable/myicon" />
</adaptive-icon>

在您的清单文件中,使用 android:icon 定义图标:

<application…android:icon="@mipmap/ic_launcher"…>
</application>

注意:如果清单中同时包含 android:roundIcon 和 android:icon,您必须移除对 android:roundIcon 的引用,或者在由 android:roundIcon 属性定义的可绘制对象中提供单色图标。

Quick Settings Placement API

通过通知栏中的“快捷设置”,用户可无需离开应用上下文就能方便地更改设置或执行快速操作。对于提供自定义图块的应用,用户可以更轻松地发现图块并将其添加到“快捷设置”。借助新的图块放置 API,您的应用现在可以提示用户直接将自定义图块添加到一组有效的快捷设置图块中。借助新的系统对话框,用户只需一步即可不离开应用就添加图块,而不必转到“快捷设置”来添加图块。

为多语言用户提供更好的支持

Android 13 引入了几项功能来改进多语言用户的应用体验,具体介绍请参阅以下几部分:

按应用设定的语言偏好设置

在许多情况下,多语言用户会将其系统语言设置为某一种语言(例如英语),但又想为特定应用选择其他语言(例如荷兰语、中文或印地语)。为了帮助应用为这些用户提供更好的体验,Android 13 针对支持多种语言的应用引入了以下新功能:

  • 使应用可在运行时设置在界面中使用其他语言的 API

    使用自定义应用内语言选择器的应用应当使用这些新 API,以确保无论用户通过何种方式选择其语言偏好设置,都能获得一致的用户体验。这些新的 API 还有助于减少样板代码的编写。

    为了向后兼容以前的 Android 版本,我们还会从 Appcompat 1.6.0-alpha01 开始在 AndroidX 中提供这些 API。

  • 允许用户为每个应用选择首选语言的系统设置

不支持多种语言的应用不受这些变更的影响。

如需了解详情,请参阅按应用设定的语言偏好设置。

改进了日语文本换行

现在,TextView 可以按 Bunsetsu(最小自然语素单元)或短语而非字符进行文本换行,从而使日语应用的界面更加美观、易读。可以通过将 android:lineBreakWordStyle=“phrase” 与 TextView 结合使用来利用此换行方式。

改进了非拉丁字母的行高

Android 13 通过使用适合每种语言的行高,改进了非拉丁文字(例如泰米尔语、缅甸语、泰卢固语和藏语)的显示。新的行高可防止字符被裁剪并改进了字符的放置。您的应用只需要以 Android 13 为目标平台就可以利用这些改进。请确保在采用新的行间距后对应用进行测试,因为这些更改可能会影响非拉丁语的界面。

文本转换 API

使用日语和中文等语言的用户会使用拼音输入法,这通常会导致搜索以及自动填充等功能的执行速度变慢。在 Android 13 中,应用可以调用新的文本转换 API,以便用户更快、更轻松地找到所需内容。例如,以前日语用户在进行搜索时需要执行以下步骤:

  1. 输入平假名作为其搜索字词(例如地点或应用名称)的发音
  2. 使用键盘将平假名字符转换为日语汉字
  3. 使用日语汉字字符重新进行搜索
  4. 最后获得搜索结果
    使用新的文本转换 API 时,日语用户可以输入平假名,然后不经过第 2 步和第 3 步就立即看到实时的日语汉字搜索结果。

Unicode 库更新

Android 13 添加了一些最新改进、修复和变更,均包含在 Unicode ICU 70、Unicode CLDR 40 和 Unicode 14.0 中。

以下是两项显著变更:

  • 英语(加拿大)en‑CA 和英语(菲律宾)en‑PH 在无可用的翻译资源时均使用英语(美国)en 翻译资源,而非英语(英国)en‑GB 翻译资源。
  • 针对西班牙语 es、意大利语 it、葡萄牙语 pt 和葡萄牙语(葡萄牙)pt‑PT 引入了 many 复数类别。与 CLDR v38 中引入的法语类似,此类别适用于大数目。

更快断字

断字让分行的文本更易于阅读,并且有助于使界面更具自适应性。在 Android 13 中,我们将断字性能优化了多达 200%,因此您现在可以在 TextView 中启用断字功能,这几乎不影响渲染性能。如需启用更快断字功能,请在 setHyphenationFrequency() 中使用新的 fullFastnormalFast 频率。

彩色矢量字体

COLRv1 矢量表情符号(左侧)和位图表情符号(右侧)
Android 13 可支持呈现 COLR 版本 1 (COLRv1) 字体,并将系统表情符号更新成了 COLRv1 格式。COLRv1 是一种高度紧凑的新字体格式,该字体在任意大小下都可以快速清晰地呈现。

对于大多数应用,系统会处理所有工作,COLRv1 可以正常使用。不过,如果您的应用使用系统字体来实现自己的文本呈现,建议您对表情符号呈现进行测试。

蓝牙 LE 音频

低功耗 (LE) 音频是新一代无线音频,旨在取代传统蓝牙并支持新的使用情形和连接拓扑。通过该技术,用户能够与朋友和家人分享音频内容以及播放音频给他们听,也可以订阅信息、娱乐或无障碍用途的公共广播内容。这项新技术可以确保用户接收到高保真度的音频,而不必牺牲电池续航时间,并且还可以在不同使用情形之间无缝切换,这是传统蓝牙技术无法实现的。Android 13 内置对 LE 音频的支持,因此,开发者应该能够在兼容设备上免费获取相关的新功能。

MIDI 2.0

Android 13 可支持新的 MIDI 2.0 标准,包括能够通过 USB 连接 MIDI 2.0 硬件。此新版标准有诸多优点,如提升控制器精度、改善对非西方地区语调的支持,以及提高使用单一音符控制器时的表现力。

隐私权和安全

照片选择器

Android 13 提供了全新的照片选择器体验。应用启动照片选择器时,用户可选择与应用分享特定图片和视频(如个人资料照片),而不是授予应用查看整个媒体库的权限。

照片选择器可为用户提供更好的隐私保护,因为您的应用无需声明任何运行时权限。此外,照片选择器还为应用提供内置标准化界面,从而打造更一致的用户体验。

注意:现在,我们推荐使用照片选择器来访问用户的照片和视频。

针对附近 Wi-Fi 设备的新运行时权限

Android 13 在 NEARBY_DEVICES 权限组中引入了一项新的运行时权限,它适用于会管理设备与附近 Wi-Fi 接入点连接情况的应用。这些应用在调用多个不同的 Wi-Fi API 时必须声明新的权限 NEARBY_WIFI_DEVICES。此外,只要应用不会通过 Wi-Fi API 推导物理位置,那么在以 Android 13 或更高版本为目标平台时,就无需声明 ACCESS_FINE_LOCATION 权限。

详细了解附近的 Wi-Fi 设备权限。

可由开发者降级的权限

从 Android 13 开始,应用可以撤消先前由系统或用户授予的运行时权限。此 API 可以帮助应用保护用户的隐私。

如需撤消特定运行时权限,请将该权限的名称传入 revokeOwnPermissionOnKill()。如需同时撤消一组运行时权限,请将这组权限的名称传入 revokeOwnPermissionsOnKill()。撤消是异步发生的,会终止与应用的 UID 相关联的所有进程。

系统只有在安全的情况下才会触发撤消操作。具体而言,当有应用组件仍在前台运行,或者有另一个应用正在访问您应用的组件(如 content provider)时,不会发生撤消。如果您想立即撤消权限,可以调用 exit()。但是,对 exit() 进行此类调用可能会导致当前正在访问您应用的其他应用出现未定义的行为或崩溃。

注意:为了让系统设置表明您的应用不会访问特定权限组中的数据,您必须撤消该权限组中的所有权限。在这种情况下,调用 revokeOwnPermissionsOnKill() 会很有帮助。

APK 签名方案 v3.1

Android 13 可支持 APK 签名方案 v3.1,此方案在现有的 APK 签名方案 v3 的基础上进行了改进,解决了 APK 签名方案 v3 的一些已知问题。具体而言,v3.1 签名方案允许应用在单个 APK 中同时支持原始签名者和轮替签名者。此外,该方案还支持 SDK 版本定位功能,这会允许轮替定位到更高版本的平台。

v3.1 签名方案使用在 12L 或更低版本中无法识别的新分块 ID。因此,平台会应用以下签名者行为:

  • 搭载 Android 13 的设备会使用 v3.1 分块中的轮替签名者。
  • 搭载旧版 Android 的设备会忽略轮替签名者,而使用 v3.0 分块中的原始签名者。
    尚未轮替其签名密钥的应用无需执行任何其他操作。每当这些应用选择轮替时,系统都会默认应用新的 v3.1 签名方案。

已经轮替并希望继续使用 v3.0 签名分块中的轮替签名密钥的应用需要更新其 apksigner 调用:

apksigner sign --ks keystore.jks |--key key.pk8 --cert cert.x509.pem--rotation-min-sdk-version API_LEVEL[signer_options] app-name.apk

…其中 API_LEVEL 为 32 或更低的值。

图形

可编程的着色器

改写自此 GLSL 着色器的 AGSL 动画着色器。
Android 13 添加了对可编程 RuntimeShader 对象的支持,其行为是使用 Android 图形着色语言 (AGSL) 定义的。AGSL 与 GLSL 共用大部分语法,但可用于 Android 渲染引擎中以自定义 Android 画布中的绘制行为以及过滤 View 内容。Android 在内部使用这些着色器来实现涟漪效果、模糊以及拉伸滚动,并且 Android 13 让您能为应用制作类似的高级效果。

核心功能

OpenJDK 11 更新

Android 13 开始刷新 Android 的核心库,以与 OpenJDK 11 LTS 版本保持一致,并增添了适合应用和平台开发者的库更新和 Java 11 语言支持。Android 13 中引入的核心库变更还可以通过 Google Play 系统更新到 ART Mainline 模块,供 Android 12 设备使用。

Android 13 包含对核心库的以下更改:

  • 支持将 var 关键字用于局部变量,以及用作参数 lambda。

  • String 类中的新方法:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • 支持 Collection.toArray(IntFunction),以便更轻松地使集合适应数组。

  • 支持 java.util 类 Optional、OptionalDouble、OptionalInt 和 OptionalLong 中的 ifPresentOrElse()、isEmpty()、orElseThrow() 和 stream()。

  • 扩展了对 SocketOptions 的支持,包括重复使用套接字。

  • NullReader、NullWriter、InputStream、OutputStream 和 transferTo()Reader 功能,用于将读取的字符传输给 Writer。

  • 添加了使用 Charsets 进行网址编码和解码的功能。

  • 适用于 FileReader、FileWriter、PrintStream 和 PrintWriter 的 Charset 功能。

  • 为 ByteArrayInput 或 OutputStream 以及 Input 或 OutputStream 新增了 transferTo()、readNBytes()、readAllBytes() 和 writeBytes() 函数。

  • 对 java.lang.invoke.VarHandle 的运行时和编译器支持。

  • 在内部使用 VarHandle 将 java.util.concurrent 更新到 OpenJDK 11 API。

Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

Android 13 更新内容(开发需知)相关推荐

  1. 苹果iOS11开发者预览版Beta2更新内容和已知问题大全

    苹果在近日为加入开发者预览版计划的用户推送了iOS11 Beta2开发者预览版固件,作为iOS11的第二个开发者预览版,这一版本的主要任务显然是扫除Bug,提升体验.现在为大家带来iOS11开发者预览 ...

  2. 删除 多个表_合并汇总多个工作簿多个工作表,删除修改新增更新内容只需刷新...

    要求:1.把多个工作簿的多个工作表内容合并汇总 2.后续在任一工作表内删除修改新增内容,无需再重新做表 3.后续在任一工作簿中新增一个或多个工作表,无需再重新做表 4.后续在文件夹中添加一个或多个Ex ...

  3. 魅族android 10更新内容,魅族基于安卓 10 的首个 Flyme 内测版已推送

    来源:IT之家 基于 Android 10 的 Flyme 首个内测版本已推送. 魅族官方称,本次推送机型为 16s Pro.16s,16th Plus.16th 目前仍存在异常重启问题未能如期发布, ...

  4. 汽车电子软件开发需知

    目录 一.嵌入式 1.1 什么是嵌入式系统 1.2 什么是汽车 ECU 1.3 如何了解一款MCU 1.4 谈谈代码静态分析 二.汽车软件 2.1 什么是"域控制器" 2.2 为什 ...

  5. android onresume时view,在onResume中,但通过 invalidate() 方法失败,Android: Graphview更新_android_开发99编程知识库...

    我正在研究一個應用程序,其中一個自定義視圖由一些後端邏輯更新. 自定義視圖在 onResume() 方法中更新,但不能通過 view.invalidate(); 更新. 我想讓這個視圖更新按鈕的onc ...

  6. android 平板oem,OEM厂商需知 安卓android平板需解决的5大问题

    长久以来安卓平板都与苹果的iPad进行着正面的交锋,在市场表现上,安卓以近80%的市场份额占据绝对的优势,但是若要从产品层面去分析,对比苹果iPad安卓平板的口碑如何,想必大家心里都有数.大部分国际大 ...

  7. 分析udp数据报_开发需知!!!TCP和UDP的特点和区别

    对于学过计算机网络的人来说,不得不提到TCP和UDP相关的概念以及知识.本节,我们简单介绍下TCP和UDP的特点. 传输控制协议TCP(Transmission Control Protocol) T ...

  8. 欢迎体验 | Android 13 开发者预览版 2

    作者 / Dave Burke, VP of Engineering 上个月,我们 发布了 Android 13 的首个开发者预览版.Android 13 围绕我们的核心主题打造,即隐私和安全.开发者 ...

  9. Android 13:一文看懂两大重磅升级

    以下内容来自公众号code小生,关注每日干货及时送达 来源 | 快科技 近日,谷歌2022年I/O开发者大会召开,作为重头戏,Android 13 Beta 2版本公开,面向"亲儿子&quo ...

最新文章

  1. 使用PlanAhead查看Virtex-7系列FPGA的底层架构
  2. Balanced Binary Tree
  3. 上海交大算法与数据结构
  4. gorm的零值问题:默认仅更新非零值
  5. 「Apollo」protobuf报错No module named ‘google‘
  6. StereoBM::disp12MaxDiff Crash the Release
  7. 【拉普拉斯机制代码实现demo】差分隐私代码实现系列(四)
  8. QT每日一练day19:设计一个记事本
  9. 洛谷题解 P1005 【矩阵取数游戏】
  10. cocopod升级1.6.0bate问题
  11. USB转串口驱动安装失败解决方法
  12. 浅谈对社会工程学的认识
  13. 2021年全国职业院校技能大赛获奖名单(高职组网络系统管理)
  14. ofo押金未退仍在自动续费上热搜,曾经的明星公司是怎么黄的?
  15. Matplotlib绘图笔记
  16. GOTC 2023全球开源技术峰会
  17. 【分享】git clone 提示 unable to access ‘http://gitlab.xxxx/gateway.git/‘: Could not resolve host xxxx
  18. vim如何提高效率:使用jk绑定Esc
  19. 不是iso文件或不能识别的格式
  20. 1588时钟同步算法仿真matlab,基于卡尔曼滤波与PID控制的IEEE1588从时钟同步研究

热门文章

  1. c语言3d打印机控制程序下载,桌面 3D打印机控制系统的设计与实现.PDF
  2. 3D打印机使用问题整理收集
  3. 南京理工大学计算机科学与工程学院复试名单,南京理工大学计算机科学与工程学院2015考研复试及录取办法...
  4. html的美图片加上2d动画,网站上面添加一个动漫小女孩的html代码 WordPress添加live2d看板娘...
  5. 加来道雄 基因编辑 纳米机器人_纳米机器人创造未来?也许是毁灭,比灭霸还恐怖的纳米灰雾了解下...
  6. 新一期ARM作业(二)----UART串口
  7. 关于Corel Vstudio8(会声会影x8)打开出现service pack 3的弹出框
  8. 微软或将于下周推出GPT-4;百度将在3月16日发布文心一言;小i机器人成功登陆纳斯达克丨每日大事件...
  9. json数据包含等号解析
  10. 基于Python的购物网站分析系统