平台稳定性里程碑 | Android 14 Beta 3 发布

news2024/11/24 14:26:15

作者 / Dave Burke, VP of Engineering

随着今天 Android 14 Beta 3 的发布,我们随之进入到 Android 开发周期的下一个阶段。Beta 3 依旧围绕着我们的核心主题打造,即隐私、安全、性能、开发者生产力和用户定制,同时继续完善平板电脑、可折叠设备等大屏设备上的体验。

1dafa6e4a6c8a160f185a1ff1aeb66a6.png

Beta 3 也让 Android 14 抵达平台稳定性里程碑,这意味着开发者 API 和所有面向应用的行为都已最终确定,供大家评估和整合进自己的应用。感谢大家这一路上向我们分享的宝贵意见和反馈,是大家帮助我们顺利抵达这一里程碑。

  • 平台稳定性里程碑
    https://developer.android.google.cn/about/versions/14/overview#platform_stability

Android 14 有很多值得您在自己的应用中尝试和探索的内容。今天的 Beta 3 同样如此,我们会在本文中着重强调新的无障碍功能 (如非线性字体放大)、隐私功能更新 (包括照片/视频的部分访问)、新的手势导航动画,以及与 OpenJDK 17 LTS 版本进一步对齐的功能。

  • 非线性字体放大
    https://developer.android.google.cn/about/versions/14/features#non-linear-font-scaling

  • 授予对照片和视频的部分访问权限
    https://developer.android.google.cn/about/versions/14/changes/partial-photo-video-access

  • 支持内置和定制预测性返回动画
    https://developer.android.google.cn/about/versions/14/features/predictive-back

  • OpenJDK 17 更新
    https://developer.android.google.cn/about/versions/14/features#core

e10c10eae3c4d4a909b58a3bbda36e45.png

平台稳定性里程碑

随着 Beta 3 和平台稳定性里程碑的到来,您可以放心地开发和发布必要的兼容性更新。请即刻开始进行最终兼容性测试,并准备发布必要的更新,从而在剩下的 Beta 测试期内获得宝贵的反馈。这些工作都有助于您在今年晚些时候 Android 14 正式发布之前就打造出流畅的应用体验。

95bdd430e5a6c22afb71d2f1abc3c6b1.png

  • 平台稳定性里程碑
    https://developer.android.google.cn/about/versions/14/overview#platform_stability

如果您是 SDK、开发库、工具和游戏引擎的开发者,立刻开始测试并尽快发布兼容性更新则更为重要: 在获得来自您的更新之前,您的下游应用和游戏开发者的工作可能会因兼容性问题而受阻。因此,请务必在发布了兼容更新后告知您的下游开发者们!

02ed6230f10422c2fdb0491c873066d3.png

应用兼容性

随着 Android 每个版本的发布,我们都会对平台进行整体的改进,以强化隐私和安全,并优化整个操作系统的用户体验。这些都可能会影响到您的应用。要测试应用的兼容性,只需在运行 Android 14 Beta 3 的设备上,通过 Google Play 或其他来源安装您的正式版应用即可。请测试应用的所有流程,找出功能或用户界面中暴露的问题。请通过行为变更清单 (针对所有应用) 来确定测试重点:

https://developer.android.google.cn/about/versions/14/behavior-changes-all

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

非线性字体放大

从 Android 14 开始,系统默认支持字体放大至 200%。这项变更为弱视用户提供了符合网络内容无障碍指南 (WCAG) 的更丰富的无障碍功能选项。请在启用最大文字尺寸 (200%) 的条件下进行用户界面测试,以确保您的应用能适应更大的文字尺寸且不影响可用性。为了更好地适配此功能,也请确保您在 Configuration 或 DisplayMetrics 中没有硬编码计算 sp,以及通过 TypedValue 的 applyDimension() 和 deriveDimension() 在 sp 和 px 之间进行转换。

  • 非线性字体放大
    https://developer.android.google.cn/about/versions/14/behavior-changes-all#non-linear-font-scaling

  • 网络内容无障碍指南 (WCAG)
    https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-scale.html

  • 使用非线性字体放大测试应用
    https://developer.android.google.cn/about/versions/14/features#test-scaling

  • Configuration
    https://developer.android.google.cn/reference/android/content/res/Configuration

  • DisplayMetrics
    https://developer.android.google.cn/reference/android/util/DisplayMetrics

  • TypedValue
    https://developer.android.google.cn/reference/android/util/TypedValue

  • applyDimension()
    https://developer.android.google.cn/reference/android/util/TypedValue#applyDimension(int,%20float,%20android.util.DisplayMetrics)

  • deriveDimension()
    https://developer.android.google.cn/reference/android/util/TypedValue#deriveDimension(int,%20float,%20android.util.DisplayMetrics)

对照片和视频授予部分访问权限

当您的应用请求任意视觉媒体权限 (READ_MEDIA_IMAGES 或 READ_MEDIA_VIDEO,于 Android 13,API 33 中引入) 时,用户可以仅授予对媒体库的部分访问权限。当您的应用切换至后台,或当用户主动杀掉您的应用时,系统会将这些部分访问权限做为单次授权处理,继而最终关闭这些权限。如果您的应用有遵守此类授权的最佳实践,此项变更不会造成影响。Android 14 引入了 READ_MEDIA_VISUAL_USER_SELECTED 权限来帮助应用更好地支持这些变更。我们建议您考虑使用照片选择器来为用户提供安全的方式让应用指定访问某些照片和视频,这样无需申请权限,体验也更流畅。

  • READ_MEDIA_IMAGES
    https://developer.android.google.cn/reference/android/Manifest.permission#READ_MEDIA_IMAGES

  • READ_MEDIA_VIDEO
    https://developer.android.google.cn/reference/android/Manifest.permission#READ_MEDIA_VIDEO

  • 对照片和视频授予部分访问权限
    https://developer.android.google.cn/about/versions/14/changes/partial-photo-video-access

  • 最佳实践
    https://developer.android.google.cn/about/versions/14/changes/partial-photo-video-access#best-practices

  • READ_MEDIA_VISUAL_USER_SELECTED
    https://developer.android.google.cn/reference/android/Manifest.permission#READ_MEDIA_VISUAL_USER_SELECTED

  • 照片选择器
    https://developer.android.google.cn/training/data-storage/shared/photopicker

数据安全信息更加凸显

为了更好地保护用户隐私,Android 14 在系统中增加了一些位置来展示您在 Play 管理中心的表单中声明的信息。对于某些权限,我们在系统运行时权限对话框中加入了一个可点击的部分,用来进一步展示应用的数据共享情况。系统对话框的这一部分会展示诸如为什么您的应用需要和第三方共享数据等信息,以及为用户提供跳转链接,用来管理您应用的数据访问设置。我们建议您审查自己应用的位置数据共享政策,并相应地更新应用在 Google Play 数据安全部分中声明的信息。

  • 更加凸显数据安全信息
    https://developer.android.google.cn/about/versions/14/changes/data-safety

  • 为 Google Play 的数据安全部分提供信息
    https://support.google.com/googleplay/android-developer/answer/10787469

请通过行为变更清单了解所有可能会影响您的应用或游戏兼容性的变更。如果您发现应用的开发库或 SDK 存在兼容性问题,请更新它们至最新版本,或联系其开发者寻求帮助。

  • 行为变更 (所有应用)
    https://developer.android.google.cn/about/versions/14/behavior-changes-all

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

  • 更新应用的目标平台并使用新 API 进行构建
    https://developer.android.google.cn/preview/migration#setup_sdk

  • 符合 Google Play 的目标 API 级别要求
    https://developer.android.google.cn/distribute/best-practices/develop/target-sdk

  • 行为变更 (以 Android 14 或更高版本为目标平台的应用)
    https://developer.android.google.cn/about/versions/14/behavior-changes-14

  • 兼容性框架工具
    https://developer.android.google.cn/guide/app-compatibility/test-debug

下面列出一些需要注意的变更 (适用于 targetSdkVersion 为 API 34 或更高的应用):

必须提供前台服务类型

如果您的应用以 Android 14 为目标平台,则您必须为应用中的每个前台服务指定至少一个前台服务类型。请务必选择能代表应用实际用例的前台服务类型。系统会检查您是否选择了正确的前台服务类型,以及应用是否正确请求运行时权限或使用所需的 API。比如,如果应用的前台服务类型是 FOREGROUND_SERVICE_TYPE_LOCATION,则系统会认为其需要申请 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限。Android 14 为健康和远程消息传递场景新增了对应的前台服务类型,而且也为短期服务、特殊用途和系统豁免保留了新的类型。如果您应用中的某个场景和这些类型都不匹配,我们强烈建议您将这部分逻辑迁移至使用 WorkManager 或用户发起的数据传输作业。

  • 前台服务
    https://developer.android.google.cn/guide/components/foreground-services

  • 前台服务类型是必填项
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required

  • FOREGROUND_SERVICE_TYPE_LOCATION
    https://developer.android.google.cn/reference/android/content/pm/ServiceInfo#FOREGROUND_SERVICE_TYPE_LOCATION

  • ACCESS_COARSE_LOCATION
    https://developer.android.google.cn/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION

  • ACCESS_FINE_LOCATION
    https://developer.android.google.cn/reference/android/Manifest.permission#ACCESS_FINE_LOCATION

  • 健康
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required#health

  • 远程消息传递
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required#remote-messaging

  • 短期服务
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required#short-service

  • 特殊用途
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required#special-use

  • 系统豁免
    https://developer.android.google.cn/about/versions/14/changes/fgs-types-required#system-exempted

  • 使用 WorkManager 调度任务
    https://developer.android.google.cn/topic/libraries/architecture/workmanager

  • 用户发起的数据传输作业
    https://developer.android.google.cn/about/versions/14/changes/user-initiated-data-transfers

OpenJDK 17 更新

Android 14 的一些变更旨在让核心库与最新的 OpenJDK LTS 版本功能对齐,这些变更可能会影响到您应用的兼容性,包括正则表达式、UUID 处理、涉及到 ProGuard 的问题,以及增加的 java.lang.ClassValue。

  • OpenJDK 17 更新
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#core-libraries

  • java.lang.ClassValue
    https://developer.android.google.cn/reference/java/lang/ClassValue

安全变更

以 Android 14 为目标平台的应用不能再向内部组件发送特定的隐式 Intent。运行时注册的广播接收器必须指定导出行为,除非它们只接收系统广播。动态加载的代码文件必须被标记为只读。如果 zip 文件名包含 ".." 或以 "/" 开头,则 ZipFile(String) 和 ZipInputStream.getNextEntry() 会抛出 ZipException 异常,以避免触发压缩路径遍历漏洞。从后台启动 Activity 现在有了额外的限制,对调用非 SDK 接口也有了更新的限制。

  • 安全变更
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#security

  • 对隐式 intent 和待处理 intent 的限制
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#safer-intents

  • 在运行时注册的广播接收器必须指定导出行为
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#runtime-receivers-exported

  • 仅接收系统广播的接收器的例外情况
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#system-broadcasts

  • 更安全的动态代码加载
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#safer-dynamic-code-loading

  • ZipFile(String)
    https://developer.android.google.cn/reference/java/util/zip/ZipFile#public-constructors

  • ZipInputStream.getNextEntry()
    https://developer.android.google.cn/reference/java/util/zip/ZipInputStream#getNextEntry%28%29

  • ZipException
    https://developer.android.google.cn/reference/java/util/zip/ZipException

  • 压缩路径遍历
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#zip-path-traversal

  • 针对从后台启动 Activity 的其他限制
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#background-activity-restrictions

  • 更新后的非 SDK 限制
    https://developer.android.google.cn/about/versions/14/behavior-changes-14#non-sdk-restrictions

99b2bc1fdf7c0db2c0ff8f9ddc22eb3c.png

即刻体验 Android 14

不论您是想体验 Android 14 的功能、测试应用还是提交反馈,都可以从这次的 Beta 3 开始。您还可以使用我们合作伙伴的设备来测试应用在平板电脑和可折叠设备上的表现,不过最简单的方法还是使用 Android Studio SDK 管理器最新预览版中安装了 64 位系统映像的 Android 模拟器中的 Pixel Tablet 或 Pixel Fold 配置进行测试。您还可以直接使用支持的 Pixel 设备 (包括最新的 Pixel 7a) 参与测试,并通过 OTA 方式获得本次以及将来的 Android 14 Beta 版 (包括功能更新)。

  • 反馈与需求

    https://developer.android.google.cn/about/versions/14/feedback

  • 安装 SDK

    https://developer.android.google.cn/about/versions/14/setup-sdk#install-sdk

  • 参与 Beta 版测试
    https://www.google.com/android/beta

为了获得最佳的 Android 14 开发体验,我们建议您使用 Android Studio Hedgehog 的最新版本。

  • Android Studio Hedgehog
    https://developer.android.google.cn/studio/preview

设置好 SDK 后,您可以:

  • 体验新功能和 API - 欢迎大家继续在我们的跟踪页报告问题。

  • 测试应用的兼容性 - 测试您的应用是否受到 Android 14 默认行为变更的影响。请将应用安装到运行 Android 14 的设备或模拟器上进行彻底的测试。

  • 使用可选变更项测试应用 - Android 14 提供了可选的行为变更,这些变更仅在您的应用以新平台为目标时才会造成影响。尽早了解和评估这些变更十分重要。为了便于测试,您可以单独启用或者禁用这些变更。

  • 设置 Android 14 SDK

    https://developer.android.google.cn/about/versions/14/setup-sdk

  • 兼容性框架变更 (Android 14)
    https://developer.android.google.cn/about/versions/14/reference/compat-framework-changes

我们将在整个 Android 14 的发布周期内定期更新 Beta 版系统映像。

如果您已经参加了 Android 14 Beta 版测试,且您的设备支持的话,您会通过 OTA 更新直接获得本次的 Beta 3,无需额外操作:

https://www.google.com/android/beta

请访问 Android 14 开发者网站了解如何获取 Beta 版等详细信息:

https://developer.android.google.cn/about/versions/14

欢迎您点击文末 "发消息" 向我们提交关于 Android 14 的反馈,或分享您对 "Android 开发者" 公众号的意见、建议,以及您希望在此看到的内容。

我们将从发送消息的微信粉丝中随机选择 5 位送出开发者礼品一组。

8e281f2552ef2a6eac68a8a79d4c13cb.jpeg

29358827502e5228b5a4ebbf6c5674cd.png

6b77cfe7f362b3428b6721acf28d8d7e.png

*开发者礼品: Android 糖果笔、Google Play 糖果笔、Android 摄像头遮盖、Android 贴纸

*获奖者仅限给 "Android 开发者" 发送消息的微信粉丝。

*本次活动同一微信用户不可重复中奖。

*我们会通过私信联系获奖的朋友,请届时关注微信消息。

* Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。

10970f588fd80eadece391ab0e9d977b.gif

推荐阅读

如页面未加载,请刷新重试

d8df214f7542cb10e5f3b699938b3144.gif 点击屏末 阅读原文 | 进一步了解 Android 14 详细更新


a0b0114500ddabeb8466aff0ae9636e5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/644600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础知识学习---排序算法

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应…

Rsync工具的详细介绍以及定时备份案例

RSYNC 什么是RSYNC rsync是类unix下的一款数据镜像备份工具——remote sync。 Rsync 的基本特点如下: 可以镜像保存整个目录树和文件系统;可以很容易做到保持原来文件的权限、时间、软硬链接等;无须特殊权限即可安装;优化的流…

Java中的Lambda表达式详解

文章目录 什么是LambdaLambda表达式的语法Lambda表达式的应用场景GUI应用Lambda表达式的优缺点总结 什么是Lambda java中的Lambda表达式是一种函数式编程的风格,它允许我们将代码作为数据传递,并在需要时执行。Lambda表达式能够极大地简化代码&#xff0…

WPF开发txt阅读器9:语音播放及其进度监控

文章目录 播放进度光标跟踪进度条 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放 播放进度 SpeechSynthesizer对象可以注册Speech_SpeakPr…

安洵杯SYCCTF2023 writeup

一、MISC 1.sudoku_easy 简单的数独交互,几个小注意点,每次发送level之后sleep5秒才会返回题目 将形如 --------------------- 800103720 023840650 410006008 300001062 000052407 072060090 160000375 205019846 000030000 --------------------- 转换…

django中url和视图函数path re_path views.py

目录 url的定义url的格式django中的urldjango中的创建自己的urldjango访问测试django中的path动态django中的path动态案例django中的path动态类型django中的path动态案例-计算器django的正则路由re_path() url的定义 url 统一资源定位符 url 用来表示互联网上某个资源的地址 …

邀请媒体参加活动的邀请函应该怎么写

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 经常有小伙伴问媒体邀请函怎么写,今天胡老师就把媒体邀请函的一个大概格式分享出来,不论是 做成什么形式的邀请函,这几点都不可少。 主题:…

数据库的基本概念

数据库的基本概念 数据(Data) 描述事物的符号记录 包括数字、文字、图形、声音、档案记录等 以“记录”形式按统一的格式进行存储 表 将不同的记录组织在一起 用来存储具体数据 数据库 表的集合,是存储和管理数据的仓库 数据库管理…

linuxOPS基础_进程查看与管理

进程与程序的关系 进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。 ​ 简单来说,程序是人使用计算机语言编写的,可…

三菱FX5U系列PLC之间进行简易PLC间链接功能的具体方法

三菱FX5U系列PLC之间进行简易PLC间链接功能的具体方法 功能介绍: 在最多8台FX5U或者FX3U PLC之间通过RS-485通信方式连接,进行软元件相互链接的功能。 接线注意事项: 根据链接模式和所使用的从站数量的不同,链接软元件的占用点数也有所变化。根据链接软元件的起始编号,对占…

Java数据结构之第十五章、Trie(前缀树/单词查找树)

一、前缀树 1.1前缀树相关知识 1.前缀树的概念:前缀树又叫字典树或单词查找树(高效的存储和查找字符串集合的数据结构)。 2.主要应用场景:给定一个字符串集合构建一颗前缀树,然后给定一个字符串,判断前缀…

Flink 流批一体在 Shopee 的大规模实践

摘要:本文整理自 Shopee 研发专家李明昆,在 Flink Forward Asia 2022 流批一体专场的分享。本篇内容主要分为四个部分: 1. 流批一体在 Shopee 的应用场景 2. 批处理能力的生产优化 3. 与离线生态的完全集成 4. 平台在流批一体上的建设和演进 …

华为OD机试 JavaScript 实现【扑克牌大小】【牛客练习题 HJ88】,附详细解题思路

一、题目描述 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王&#xff09…

JavaScript笔记——快速了解 ES6 新增数组方法,开箱即用(含案例)

文章目录 📋前言🎯Array.from()🎯Array.of()🎯Array.find()🎯Array.findIndex()🎯Array.includes()🎯Array.flat()🎯Array.flatMap()🎯Array.every()🎯Array.…

MQTT相关知识点

目录 一、简述 二、设计规范 三、MQTT协议原理 3.1 MQTT协议实现方式 3.2 网络传输与应用消息 3.3 MQTT客户端 3.4 MQTT服务器 3.5 MQTT协议中的订阅、主题、会话 3.6 MQTT协议中的方法 四.MQTT脑图 五.体验MQTT 搭建MQTT服务器(Broker) MQT…

MFC 工具栏SOP 线程创建非模式化窗口 实现拓展工具栏

自己在学习工具栏的时候,做的笔记 1 实现基本工具栏 1.1 在Dlg.h文件中声明变量和定义资源ID #define ID_BUTTONS 501CToolBar m_toolbar; //工具栏 CImageList m_imageList; //工具栏图片 CImageList m_hotImageList; //工具栏热点图片 CReBar m_Rebar; //…

Jenkins安装以及部署

本文基于war包形式部署的 需要提前下载Jenkins的war包 Jenkins 的安装和设置下载内容 https://mirrors.jenkins.io/war 版本对应 目录 1.初始化环境 2.安装jdk 安装git Maven配置 安装Jenkins 使用DockerFile的方式进行部署 1.初始化环境 mkdir -p /home/soft 2.安装…

Python零基础入门(一)——Python简介与基础语法

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不…

智慧食堂如何建造?手把手教你

智慧食堂是现代科技与餐饮行业相结合的创新应用。随着技术的不断发展,许多企业和机构正积极采用智慧收银系统来改进食堂管理和收银流程。 引入智慧收银系统不仅可以提高企业食堂的运营效率,降低错误率,还能为企业带来更多的商机和竞争优势。 …

开源客户沟通平台Chatwoot

什么是 Chatwoot ? Chatwoot 是一个开源客户沟通平台,可帮助公司在其网站、Facebook 页面、Twitter、Whatsapp、SMS、电子邮件等上吸引客户。 它是 Intercom、Zendesk、Salesforce Service Cloud 等的开源替代品。 很多网站的右侧或者右下角,…