当前位置: 首页 > news >正文

Android 15 正式发布至 AOSP

Google官方宣布,将于近期发布了 Android 15,而在早些时候,Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内,Android 15 将在受支持的 Pixel 设备上正式推出,并将于今年晚些时候在三星、Honor、iQOO、Lenovo、Motorola、Nothing、一加、OPPO、真我、夏普、索尼、Tecno、vivo 和小米等设备上推出。

源码地址:Android Open Source Project

Android 15 延续了我们构建私密、安全平台的使命,致力于帮助您提高工作效率,同时为您提供各种新功能,以便您制作精美的应用、打造卓越的媒体和相机体验,尤其是在平板电脑和可折叠设备上提供流畅的用户体验。

以下是Android 15版本推出的更新内容:

改善开发者体验

虽然我们提高工作效率的大部分工作都围绕 Android Studio、Jetpack Compose 和 Android Jetpack 库等工具展开,但每个新的 Android 平台版本都包含改善 QOL 的更新,以提升开发体验。例如,Android 15 为您提供新的见解和遥测数据,旨在帮助您进一步优化应用体验,从而改善应用在任何平台版本上的运行方式。

  • ApplicationStartInfo API 有助于您深入了解应用的启动情况,包括启动原因、启动阶段耗时、启动温度等。

  • Android Jetpack 中的 Profiling 类简化了在 Android 15 中使用新的 ProfilingManager API 的方式,允许您的应用请求堆分析报告、堆转储、堆栈采样或系统跟踪,以一种新的方式来收集用户设备上应用运行情况的遥测数据。

  • StorageStats.getAppBytesByDataType([type]) API 为您提供有关应用如何使用存储的新见解,包括 apk 文件拆分、提前编译 (AOT) 和加速相关代码、dex 元数据、库和引导配置文件。

  • PdfRenderer API 现在包括了集成高级功能的能力,例如渲染受密码保护的文件、注释、表单编辑、搜索以及复制选择。支持线性 PDF 优化功能,以加快本地 PDF 的查看速度并减少资源使用。Jetpack PDF 库不仅可以使用这些 API 来简化向应用添加 PDF 查看功能的操作,还计划支持较旧的 Android 版本。

  • 新增的 OpenJDK API 可支持额外的 Math/StrictMath 方法、包括 Sequenced Collection/Map/Set 在内的许多 util 更新、Deflater 中的 ByteBuffer 支持以及安全密钥更新。这些 API 更新通过 Google Play 系统更新推送到运行 Android 12+ 至 Android 15 的超十亿台设备上,以便您可以最大范围地使用最新的编程功能。

  • 新增的 SQLite API 包括对只读延迟事务的支持、在不发出额外查询的情况下检索已更改行数或最后插入的行 ID 的新方法,以及对原始 SQLite 语句的直接支持。

  • Android 15 增加了新的 Canvas 绘图功能,包括有助于在 3D 中处理 Canvas 的 Matrix44 和通过与当前着色器或当前着色器的差异相交来生成复杂形状的 clipShader/clipOutShader。

改进排版效果和提高国际化水平

Android 可帮助您打造出精美的应用,使其能在全球多样化的 Android 生态系统中流畅运行。

  • 现在,您可以使用 Android 15 中的可变字体创建 FontFamily 实例,而不必使用 buildVariableFamily API 指定 wght 和 ital 轴;文本渲染器将自动调整 wght 和 ital 轴的值,以便显示文本与兼容的字体相匹配。

  • Android 15 中,适用于中文、日文和韩文 (CJK) 的字体文件 NotoSansCJK 成为可变字体,为创意排版开辟了新的可能性。

  • Android 15 默认捆绑一个旧日文平假名 (即 "Hentaigana") 字体文件,这既有助于增添独特的设计风格,同时还让开发者可以更准确地理解和传达古代日本文献。

  • Android 15 中的 JUSTIFICATION_MODE_INTER_CHARACTER 针对中文和日文等使用空格进行分段的语言进行对齐优化。

相机和媒体改进

每次 Android 发布都会帮助您为用户带来卓越的媒体和相机体验。

  • 对于同时包含 HDR 和 SDR 内容的屏幕,Android 15 允许您使用 setDesiredHdrHeadroom 控制 HDR 余量,以防出现 SDR 内容呈现褪色效果。

  • Android 15 支持智能调整包含响度元数据的 AAC 音频的音频响度和动态范围压缩级别,以便音频级别可以适应用户设备和周围环境。要启用此功能,请使用来自关联 AudioTrack 中的音频会话 ID 实例化 LoudnessCodecController。

  • Android 15 中的弱光增强功能可在弱光条件下调整预览流的曝光度,从而实现图像预览增强、在弱光下扫描二维码等功能。

  • Android 15 中的高级闪光灯强度调整,可在拍摄图像时精确控制 SINGLE 和 TORCH 模式下的闪光强度。

  • Android 15 扩展了对虚拟 MIDI 应用的 UMP 支持,使作曲应用能够将合成器应用作为虚拟 MIDI 2.0 设备进行控制,就像控制 USB MIDI 2.0 设备一样。

改善用户体验

我们致力于在每个版本中不断改进 Android 用户体验,同时努力提高性能和电池寿命。以下是 Android 15 的一些改进,旨在提供更直观、更高性能、更便于访问的体验。

  • 在 Android 15 上,用户不仅可以保存自己偏好的分屏应用组合以快速访问,还可以在屏幕上固定任务栏以在应用之间快速切换,从而实现更好的大屏多任务处理。确保您的应用具有自适应性比以往任何时候都更为重要。

  • Android 15 默认在以 SDK 35 为目标时 "无边框" 显示应用。此外,系统栏将默认为透明或半透明,内容将在其后面绘制。要确保您的应用已准备就绪,请查看 "使用边衬区处理重叠"(视图) 或 "Compose 中的窗口边衬区"。此外,许多 Material 3 可组合项可帮助您处理边衬区。

  • Android 15 使 TalkBack 能够支持通过 USB 和安全蓝牙使用 HID 标准的盲文显示屏,以帮助 Android 支持更广泛的盲文显示屏。

  • 在受支持的 Android 15 设备上,NfcAdapter 允许应用请求观察模式以及注册过滤器,从而在大多数情况下在多个支持 NFC 的应用之间实现一键交易。

  • 应用可以声明一个属性,以允许您的应用或活动在受支持的 "翻盖式" 设备的小外屏上显示。

  • Android 15 大大增强了 AutomaticZenRules,通过添加类型、图标、触发描述和触发 ZenDeviceEffects 的能力,允许应用进一步自定义注意力管理 (勿扰) 规则。

  • Android 15 现在支持以操作系统级执行应用归档和取消归档。归档操作会删除 APK 和已缓存的文件,但会保留用户数据,并通过 LauncherApps API 返回可显示的应用,并且原始安装程序可以在请求取消归档时恢复相关数据。

  • 作为改善电池寿命和多任务性能工作的一部分,我们在 Android 15 中对前台服务做出了一些更改,包括新增数据同步超时、新的媒体处理前台服务类型,以及在应用拥有 SYSTEM_ALERT_WINDOWS 权限的情况下,限制从 BOOT_COMPLETED 启动前台服务。

  • 从 Android 15 开始,16 KB 页面大小支持将在特定设备上作为开发者选项提供。当 Android 使用这种较大的页面大小时,我们的初步测试结果显示,在额外使用约 9% 的内存时,整体性能提升了 5-10%。

隐私和安全增强功能

隐私和安全是我们所有工作的核心,所以我们致力于在每个平台版本中做出有意义的改进,以保护应用和我们的用户。

  • Android 15 中的私密空间支持用户在自己的设备上创建独立的空间,用户可以为该空间设置额外的身份验证步骤,防止敏感应用遭到窥探。对于某些类型的应用 (如医疗应用、启动器应用和应用商店),可能需要采取额外步骤才能让其在用户的私密空间中正常运行。

  • Android 15 支持使用通行密钥进行一键登录,并支持自动填充已保存的凭证到相关输入字段。

  • Android 15 增加了对应用的支持,使其能够检测自身行为是否被记录。这样一来,如果您的应用正在执行敏感操作,您便可以告知用户他们的行为正在被录制。

  • Android 15 添加了 allowCrossUidActivitySwitchFromBelow 属性,用以阻止与堆栈上的顶部 UID 不匹配的应用启动活动,以免发生任务劫持攻击。

  • 在 Android 15 中,PendingIntent 创建者默认会阻止后台活动启动,以帮助防止应用意外创建可能被恶意攻击者滥用的 PendingIntent。

应用、库、工具和游戏引擎整装待发

如果您开发的是 SDK、库、工具或游戏引擎,现在更重要的是准备所有必要更新,让下游应用和游戏开发者免受兼容性问题的阻碍,从而能针对最新的 SDK 功能进行开发。请务必告知开发者是否需要更新才能完全支持 Android 15。

测试应用的环节包括: 通过 Google Play 或其他方式将您的应用安装到运行 Android 15 的设备或模拟器上;运行应用的所有工作流程,检查是否有功能或界面问题;检查应用的行为变更以便您集中测试。即使您尚未针对 Android 15 采取任何行动,也请您关注以下几项变更:

  • 更改软件包停止状态 - Android 15 更新了软件包 FLAG_STOPPED 状态的行为,在用户启动应用或间接与应用交互之前,使应用保持停止状态。

  • 支持 16 KB 的页面大小 - 从 Android 15 开始,部分设备将支持配置为使用 16 KB 页面大小,并作为开发者选项提供。此外,Android Studio 还通过 SDK 管理器提供支持 16 KB 的模拟器系统映像。如果您的应用或库直接或通过 SDK 间接使用 NDK,您可以使用 QPR Beta 版或 Android 15 模拟器系统映像中的开发者选项来测试和修复应用,为即将采用 16 KB 页面大小的 Android 设备做好准备。

  • 私密空间支持 - 测试安装在私密空间中的应用/库是否可以正常运行;我们为医疗应用、启动器应用和应用商店提供了指南。

  • 移除旧版表情符号字体文件 - 某些搭载 Android 15 的设备 (如 Pixel) 将不再包含自 Android 13 以来针对兼容性提供的位图 NotoColorEmojiLegacy.ttf 文件,而是仅保留默认的矢量文件。

在兼容性测试中,请彻底测试您应用正在使用的库与 SDK。如果遇到任何问题,您可能需要更新到最新的 SDK 版本或联系开发者寻求帮助。

应用兼容性

我们优先考虑应用的兼容性,致力于更快、更流畅地完成每次的平台版本更新。在 Android 15 中,我们将大多数面向应用的更改设置为可选择,直到您的应用目标 SDK 版本为 35。这样,您就有更多时间对应用进行必要的更改。

为了让您能够更轻松地测试可能影响您应用的可选更改,我们今年又根据您的反馈对其中许多更改提供了可切换选项。通过切换开关,您可以从开发者选项或 adb 中单独强制启用或禁用这些更改。您可以在此处查看操作方法。

图片


为了帮助您针对 Android 15 迁移应用,最新的 Android Studio Koala Feature Drop 版本中的 Android SDK 升级助手现在涵盖了 Android 15 API 更改,并引导您完成升级 targetSdkVersion 的步骤。

图片

即刻体验 Android 15

如果您有受支持的 Pixel 设备,则将在 Android 15 可用时通过 OTA 收到更新。如果您不想等待,欢迎随时加入 Android 15 QPR Beta 版计划,以获取最新的季度平台发布 (QPR) 测试版。

如果您已经在支持下一个 Android 版本的 Pixel 设备上加入 QPR Beta 版计划,则有机会安装首个 Android 15 QPR Beta 版更新。如果您想在不擦除设备数据的情况下退出 Beta 版计划,请勿安装 Beta 版,而是等待针对 Pixel 设备发布的正式版本更新。应用稳定版本更新后,只要不应用下一个 Beta 版更新,您就可以在无需执行数据擦除操作的情况下退出测试计划。

相关文章:

Android 15 正式发布至 AOSP

Google官方宣布,将于近期发布了 Android 15,而在早些时候,Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内,Android 15 将在受支持的 Pixel 设备上正式推出,并将于今年晚些时候在三星、Honor、iQOO、…...

IEEE Electronic Library(IEL)数据库文献检索下载介绍及个人获取IEEE文献途径

一、数据库介绍 IEEE(The Institute of Electrical and Electronics Engineers,电气电子工程师学会)是目前全球最大的非营利性专业技术学会,在全球160多个国家拥有超过45万名会员。IEEE在电气电子、计算机、半导体、通讯、电力能…...

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG:rerank模型微调实践 bge-reranker-v2-m3动手学习RAG:迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…...

蓝桥杯2024省C

P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏,他有 7385137888721个 22的方块和 10470245 个 11 的方块,他需要从中挑出一些来拼出一个正方形,比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形,用…...

C++:内部类,匿名对象,操作符new与delete

一.内部类 1.如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。 2.内部类默认是外部类的友元类。…...

【数据结构】排序算法---计数排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组…...

mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换

获取当前日期和时间 NOW():返回当前的日期和时间。CURDATE():返回当前的日期。CURTIME():返回当前的时间。 SELECT NOW(), CURDATE(), CURTIME(); 日期和时间格式化 DATE_FORMAT(date, format):根据指定的格式字符串格式化日期…...

Android开发高频面试题之——kotlin篇

Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会…...

8--SpringBoot原理分析、注解-详解(面试高频提问点)

目录 SpringBootApplication 1.元注解 --->元注解 Target Retention Documented Inherited 2.SpringBootConfiguration Configuration Component Indexed 3.EnableAutoConfiguration(自动配置核心注解) 4.ComponentScan Conditional Co…...

语言的枚举

不同语言的枚举 C/C枚举本质是整型,在Java中是对象,而非基本类型,可通过instanceof Object判断是否是对象类型。C#与Java不同,枚举是值类型。C语言更纯粹,枚举绝对当成整数,可以对枚举变量用整数赋值&…...

C# Redis 框架开发技术详解

引言 Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时分析等场景。在 C# 中,有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库: StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…...

Rust:Result 和 Error

在 Rust 编程语言中,错误处理是一个核心部分,用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质(trait)来处理错误。 Result 枚举 Result 是一个泛型枚举,用于表示一个操作可能成功或失败。它有两个…...

Python基础(八)——MySql数据库

一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储,借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载:https://www.mysql.com/ 查看是否安装配置成功: 安装DBeaver用于Mysql数据库图形化 安装:…...

统一网关--gateway(仅供自己参考)

1、网关的概念: 2、网关的功能: (1):身份认证和权限校验 (2):服务路由(具体的业务路由到具体的服务),负载均衡(多台服务的话&#xff…...

【Leetcode152】分割回文串(回溯 | 递归)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 具体例子和步骤:假设 s "aab",步骤如下: 初始状态: s "aab"path []res [] 第一层递归(外层循环): path []检…...

基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…...

深入探究 Flask 的应用和请求上下文

目标 读完本文后,您应该能够解释: 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时,处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…...

C++学习笔记(30)

二十三、随机数 在实际开发中,经常用到随机数,例如:纸牌的游戏洗牌和发牌、生成测试数据等。 函数原型: void srand(unsigned int seed); // 初始化随机数生成器(播种子)。 int rand(); // 获一个取随机数。…...

Rust GUI框架 tauri V2 项目创建

文章目录 Tauri 2.0创建应用文档移动应用开发 Android 前置要求移动应用开发 iOS 前置要求参考资料 Tauri 2.0 Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架…...

C++继承(上)

1.继承的概念 继承是一个类继承另外一个类&#xff0c;称继承的类为子类/派生类&#xff0c;被继承的类称为父类/基类。 比如下面两个类&#xff0c;Student和Person&#xff0c;Student称为子类&#xff0c;Person称为父类。 #include<iostream> using namespace std…...

在 Vim 中打开文件并快速查询某个字符

在 Vim 中打开文件并快速查询某个字符&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Vim 并加载文件&#xff1a; vim your_file.txt将 your_file.txt 替换为你要查询的文件名。 进入普通模式&#xff08;如果你还在插入模式或其他模式下&#xff09;&#xff1a; Es…...

oracle 条件取反

在Oracle数据库中&#xff0c;条件取反主要通过逻辑运算符NOT来实现。NOT是一个单目运算符&#xff0c;用于对指定的条件表达式取反。当条件表达式为真&#xff08;True&#xff09;时&#xff0c;NOT运算符的结果就是假&#xff08;False&#xff09;&#xff1b;反之&#xf…...

力扣最热一百题——缺失的第一个正数

目录 题目链接&#xff1a;41. 缺失的第一个正数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;标记数组法 1. 将非正数和超出范围的数替换 2. 使用数组下标标记存在的数字 3. 找到第一个未标记的位置 4. 为什么时间复杂…...

零基础入门AI:一键本地运行各种开源大语言模型 - Ollama

什么是 Ollama&#xff1f; Ollama 是一个可以在本地部署和管理开源大语言模型的框架&#xff0c;由于它极大的简化了开源大语言模型的安装和配置细节&#xff0c;一经推出就广受好评&#xff0c;目前已在github上获得了46k star。 不管是著名的羊驼系列&#xff0c;还是最新…...

3.接口测试的基础/接口关联(Jmeter工具/场景一:我一个人负责所有的接口,项目规模不大)

一、Jmeter接口测试实战 1.场景一&#xff1a;我一个人负责所有的接口&#xff1a;项目规模不大 http:80 https:443 接口文档一般是开发给的&#xff0c;如果没有那就需要抓包。 请求默认值&#xff1a; 2.请求&#xff1a; 请求方式:get,post 请求路径 请求参数 查询字符串参数…...

【matlab】将程序打包为exe文件(matlab r2023a为例)

文章目录 一、安装运行时环境1.1 安装1.2 简介 二、打包三、打包文件为什么很大 一、安装运行时环境 使用 Application Compiler 来将程序打包为exe&#xff0c;相当于你使用C编译器把C语言编译成可执行程序。 在matlab菜单栏–App下面可以看到Application Compiler。 或者在…...

从底层原理上解释clickhouse查询为什么快

ClickHouse 是一个开源的列式数据库管理系统&#xff0c;以其极高的查询性能著称。为了理解 ClickHouse 查询为什么快&#xff0c;我们需要从以下几个方面进行深入探讨&#xff0c;包括其架构设计、存储引擎、索引结构、并行化策略以及内存管理等底层原理。 1. 列式存储&#…...

FEAD:fNIRS-EEG情感数据库(视频刺激)

摘要 本文提出了一种可用于训练情绪识别模型的fNIRS-EEG情感数据库——FEAD。研究共记录了37名被试的脑电活动和脑血流动力学反应&#xff0c;以及被试对24种情绪视听刺激的分类和维度评分。探讨了神经生理信号与主观评分之间的关系&#xff0c;并在前额叶皮层区域发现了显著的…...

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…...

redis群集三种模式:主从复制、哨兵、集群

redis群集有三种模式 redis群集有三种模式&#xff0c;分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cluster群集 ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制…...