Android15 Beta更新速览

news/2024/7/20 7:08:06/文章来源:https://blog.csdn.net/u011897062/article/details/139261896

Android15 Beta更新速览

前台服务变更

前台服务使应用保持活动状态,以便它们可以执行关键且对用户可见的操作,通常以牺牲电池寿命为代价。在 Android 15 Beta 2 中,dataSync 和 mediaProcessing 前台服务类型现在具有约 6 小时的超时时间,之后系统将调用 Android 15 的新 Service.onTimeout(int, int) 方法。在此时,该服务将不再被视为前台服务。如果服务没有在超时后调用 Service.stopSelf() 来响应,它将会因失败而停止。

Beta 2 还为在应用在后台运行时启动前台服务添加了新的要求。- 如果你的前台服务依赖于 SYSTEM_ALERT_WINDOW 权限豁免以进行后台启动,那么现在在针对 Android 15 进行目标设置时,你需要有一个可见的悬浮窗口。

即将要求支持的16 KB页面大小

Android 15新增了对使用更大页面大小的设备的支持,除了标准的4 KB页面外,还支持16 KB页面。如果您的应用程序使用任何NDK库,无论是直接还是间接通过SDK,那么您可能需要简单地重新构建您的应用程序,以便在这些16 KB页面大小的设备上运行。

具有更大页面大小的设备在内存密集型工作负载方面可能具有更好的性能。虽然我们的测试可能不代表生态系统中的所有设备,但在我们对配置为16 KB页面大小的设备的初始测试中,我们发现了一些性能收益:

在系统承受内存压力时,应用程序启动时间较短:平均降低了3.16%,对于我们测试的一些应用程序,改善更显著(最高可达30%)
应用程序启动时功耗降低:平均减少了4.56%
相机启动更快:热启动平均快了4.48%,冷启动平均快了6.60%
系统启动时间改善:平均改善了1.5%(约0.8秒)

随着设备制造商继续构建具有更大物理内存(RAM)的设备,其中许多设备将采用16 KB(以及更大)的页面大小来优化设备的性能。添加对16 KB页面大小设备的支持使您的应用程序能够在这些设备上运行,并使您的应用程序受益于相关性能改进。我们计划将16 KB页面的兼容性要求纳入明年上传到Play Store的应用程序。

现代Android GPU架构

  • Android硬件的发展:从单个CPU核心到现代GPU硬件,通过Vulkan图形API自Android 7.0开始。
  • Vulkan的好处:较低级别的抽象、更好的CPU核心支持、减少的驱动程序开销,导致应用程序和游戏性能的提升。
  • Vulkan作为Android首选的GPU接口。
  • Android 15中包含的ANGLE:作为在Vulkan上运行OpenGL ES的可选层,标准化OpenGL实现,可能提高性能。
  • 使用ANGLE测试OpenGL ES应用:在"开发者选项 → 实验性:启用ANGLE"设置中可用。
  • Android ANGLE on Vulkan路线图:ANGLE将成为新设备上的标准GL系统驱动程序,未来预期OpenGL/ES将仅通过ANGLE可用。
  • 对所有设备的OpenGL ES支持将继续。
  • 建议:使用开发者选项测试ANGLE驱动程序,鼓励新的C/C++项目使用Vulkan。
  • Android 15中的现代图形改进:引入Matrix44进行3D画布操作,clipShader和clipOutShader用于高效绘制复杂形状。

效率更高的AV1软解码

  • dav1d是VideoLAN开发的AV1软件解码器,现已适用于不支持AV1硬件解码的Android设备。
  • dav1d比传统的AV1软件解码器性能高出多达3倍,可在更多低端和中端设备上实现高清AV1播放。
  • 应用程序需要通过名称"c2.android.av1-dav1d.decoder"来选择使用dav1d,将在后续更新中成为默认的AV1软件解码器。
  • 此支持已标准化,并已回溯到接收了Google Play系统更新的Android 11设备。
  • 开发者可以在 “构建现代Android媒体和相机体验” I/O讲座中了解有关Android媒体和相机的最新功能和解决方案。

更安全的隐私空间

  1. 隐私空间: 用户可以在设备上创建一个独立的空间,将敏感的应用程序放置其中,以避免被他人窥视。隐私空间使用单独的用户配置文件,当用户锁定隐私空间时,配置文件将被暂停,即应用程序将不再处于活动状态。用户可以选择使用设备锁定或单独的锁定因素来保护隐私空间。
  2. 应用程序处理: 在隐私空间中的应用程序将显示在启动器的单独容器中,并在隐私空间被锁定时隐藏在最近视图、通知、设置和其他应用程序中。用户生成和下载的内容(媒体、文件)以及账户在隐私空间和主空间之间是分开的。
  3. 系统功能: 当隐私空间解锁时,系统共享表和照片选择器可用于向应用程序提供跨空间的内容访问。 Android 15 beta 2.1 部分修复了在 beta 2 中已知的隐私空间问题,该问题影响了主屏幕应用程序。

选定照片访问改进

现在,当应用程序获得对媒体权限的部分访问权限时,可以仅突出显示最近选择的照片和视频。这可以改善经常请求访问照片和视频的应用程序的用户体验。通过在查询 MediaStore 时通过 ContentResolver 启用 QUERY_ARG_LATEST_SELECTION_ONLY 参数来实现此目的。

val externalContentUri = MediaStore.Files.getContentUri("external")val mediaColumns = arrayOf(FileColumns._ID,FileColumns.DISPLAY_NAME,FileColumns.MIME_TYPE,
)val queryArgs = bundleOf(// 仅返回最后一次选择的项目(选择的照片访问)QUERY_ARG_LATEST_SELECTION_ONLY to true,// 基于添加到设备存储的时间对返回的项目进行按时间顺序排序QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC",QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?",QUERY_ARG_SQL_SELECTION_ARGS to arrayOf(FileColumns.MEDIA_TYPE_IMAGE.toString(),FileColumns.MEDIA_TYPE_VIDEO.toString())
)val cursor = contentResolver.query(externalContentUri, mediaColumns, queryArgs, null)

内容 URI 的权限检查

Android 15 引入了一组新的 API,用于对内容 URI 进行权限检查。它们包括:

  • Context.checkContentUriPermissionFull:对内容 URI 执行完整的权限检查。
  • Activity 清单属性 requireContentUriPermissionFromCaller:在活动启动时强制执行指定的权限。
  • 用于 Activity 调用者的 ComponentCaller 类:表示启动活动的应用程序。

安全的后台活动启动

Android 15 通过添加更改来保护用户免受恶意应用的侵害,并使他们对其设备拥有更多控制权,防止恶意后台应用程序将其他应用程序置于前台、提升其特权并滥用用户交互。自 Android 10 以来,已经限制了后台活动启动。

在同一任务中的恶意应用程序可以启动另一个应用程序的活动,然后将自身覆盖在其上,从而制造出作为该应用程序的假象。这种“任务劫持”攻击绕过了当前的后台启动限制,因为它全部发生在同一个可见任务中。为了减轻这种风险,我们添加了一个标志,阻止与堆栈顶部 UID 不匹配的应用程序启动活动。为了为您的应用程序的所有活动选择加入此保护,请更新应用程序的 AndroidManifest.xml 文件中的 allowCrossUidActivitySwitchFromBelow 属性:

<application android:allowCrossUidActivitySwitchFromBelow="false" >

一旦您的应用程序选择加入新的保护措施,可以在 Activity 内部使用此 API 来选择退出特定的共享活动:

public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setAllowCrossUidActivitySwitchFromBelow(true);
...
}

了解更多关于从后台启动活动的限制。

https://developer.android.cn/guide/components/activities/background-starts

更安全的Intent

Android 15 引入了新的安全措施,使 Intent 更加安全和稳健。这些改进旨在防止潜在的漏洞和 Intent 的误用,这些漏洞和误用可能被恶意应用程序利用。Android 15 中对 Intent 安全性的改进主要有两点:
匹配目标 Intent 过滤器:针对特定组件的 Intent 必须准确匹配目标的 Intent 过滤器规范。如果您发送一个用于启动另一个应用程序活动的 Intent,则目标 Intent 组件需要与接收活动声明的 Intent 过滤器相匹配。
Intent 必须具有动作:不带动作的 Intent 将不再匹配任何 Intent 过滤器。这意味着用于启动活动或服务的 Intent 必须具有明确定义的动作。

重要提示:这些改进将成为严格模式的一部分。如果您想尝试它们,请添加以下方法:

public void onCreate() {StrictMode.setVmPolicy(VmPolicy.Builder().detectUnsafeIntentLaunch().build());...

将最低目标 SDK 版本从 23 增加到 24

Android 15 将安装应用程序所需的最低目标 SDK 版本从 23 增加到 24,这在 Android 14 中的最低目标 SDK 变更基础上构建。过时的应用程序通常缺乏最新的安全保护措施,使设备和数据容易受到攻击。要求应用程序符合现代 API 级别有助于确保更好的安全性和隐私。

如果您尝试安装一个目标 API 级别低于 24 的应用程序,您将在 Logcat 中看到一个错误:INSTALL_FAILED_DEPRECATED_SDK_VERSION:App package must target at least SDK version 24, but found 7.

优质的设备体验

Android 15 包括一些功能,帮助您的应用程序改善使用 Android 设备的体验,包括更流畅的过渡效果、更有帮助的用户界面、针对大屏幕设备的更新以及设计师更多美观的选择。

改进的大屏幕多任务处理

Android 15 beta 2 为大屏幕设备的多任务处理提供了更好的方式。例如,用户可以将任务栏固定在屏幕上,以便快速在应用程序之间切换,或者保存他们喜欢的分屏应用程序组合以便快速访问。这意味着确保您的应用程序具有适应性比以往任何时候都更重要。Google I/O 有关于构建适应性 Android 应用程序和使用 Material 3 适应性库构建 UI 的会议,可以提供帮助,我们的文档中还有更多帮助您为大屏幕设计的内容。

窗口插图

除了边到边的强制执行外,在 Android 15 中,当目标 SDK 版本为 35+ 时,Configuration.screenWidthDp screenHeightDp 现在包括系统栏的深度。虽然这些值仍然可以用于资源选择(例如 res/layout-h500dp),但不建议将它们用于布局计算。

画中画

Android 15 在画中画(PiP)方面引入了新的变化,确保进入画中画模式时过渡更加平稳。这将有利于具有 UI 元素叠加在其主 UI 上的应用程序进入画中画模式。当前,onPictureInPictureModeChanged 用于定义切换叠加 UI 元素的可见性的逻辑。此回调在 PiP 进入或退出动画完成时触发。从 Android 15 开始,我们在 PictureInPictureUiState类中引入了一个新的状态。当 PiP 进入动画开始时,将调用 onPictureInPictureUiStateChanged 回调,并且应用程序可以隐藏叠加的 UI 元素。

override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {if (pipState.isTransitioningToPip()) {// 隐藏 UI 元素}}override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {if (isInPictureInPictureMode) {// 取消隐藏 UI 元素}}

对于 PiP 窗口,这种快速切换不相关 UI 元素的可见性,将确保进入 PiP 的动画更加平滑,没有闪烁。

使用生成的预览丰富的小部件预览

通过显示个性化预览使您的小部件脱颖而出。针对 Android 15 的应用程序可以向小部件选择器提供 Remote Views,以便它们可以更新选择器中的内容,使其更能代表用户将看到的内容。应用程序可以使用 AppWidgetManager 的 setWidgetPreview、getWidgetPreview 和 removeWidgetPreview 方法,使用最新的个性化信息更新其小部件的外观。

预测式返回

预测式返回在使用手势导航时提供了更加流畅、直观的导航体验,利用内置动画告知用户其操作将带他们去哪里,以减少意外结果。在 Android 15 中,预测式返回将不再位于开发者选项之后,因此对于已正确迁移的应用程序,系统动画,例如返回主页、跨任务和跨活动,将出现。

为通知渠道设置振动效果

Android 15 beta 2 现在支持通过 NotificationChannel.setVibrationEffect 为通知渠道设置丰富的振动效果,因此您的用户可以在不查看设备的情况下区分不同类型的通知。

Health Connect 的新数据类型

Health Connect 是用户控制和管理其健身数据访问的集中方式,正在添加对更多健康和健身用例的支持。此版本有 2 种新的数据类型:皮肤温度和训练计划。

皮肤温度跟踪允许用户从可穿戴设备或其他跟踪设备中存储和共享更准确的温度数据。

训练计划是帮助用户实现其健身目标的结构化锻炼计划。训练计划支持包括:

围绕燃烧的卡路里、距离、持续时间、重复次数和步数的完成目标
围绕尽可能多的重复次数(AMRAP)、节奏、心率、功率、感知努力率和速度的性能目标

“选择您的称谓” 系统偏好设置

最初仅适用于法语,但很快将扩展到其他性别语言,用户可以使用语法性别首选项自定义 Android 系统如何称呼他们。新设置可以在系统语言设置中找到:设置 → 系统 → 语言和输入 → 系统语言 → 选择您的称谓。

ICU语言和字体

  • Android 15 Beta 2 包含了 ICU 74 的 API 相关更新。
  • ICU 74 包含了来自 Unicode 15.1 的更新,包括新字符、表情符号、安全机制以及相应的 API 和实现,以及 CLDR 44 区域设置数据的更新,其中包括新的区域设置和各种添加和更正。
  • 从 Android 15 开始,中文、日文和韩文语言的字体文件 NotoSansCJK 现在是一个可变字体。可变字体为中日韩语言的创意排版开辟了新的可能性。设计师可以探索更广泛的风格,并创建以前难以或不可能实现的视觉效果。
  • Android 15 中默认捆绑了一个用于旧日语平假名(称为 Hentaigana)的新字体文件。Hentaigana 字符的独特形状可以为艺术作品或设计增添独特的风采,同时有助于保持古代日本文件的准确传输和理解。


    避免文字被裁剪

一些草书字体或具有复杂形状的语言字符可能会将字母绘制在前一个或后一个字符的区域内。这样的字母可能会在起始位置或结束位置被裁剪。从 Android 15 开始,TextView 为这样的字母分配额外的宽度,并在左侧添加额外的填充。

由于这会改变 TextView 决定宽度的方式,如果应用程序的目标为 Android 15 或更高版本,则 TextView 默认情况下会分配更多的宽度。您可以通过调用 TextView 上的 setUseBoundsForWidth API 来启用或禁用它。由于添加左填充可能会导致现有布局的错位,因此即使目标是 Android 15 或更高版本,填充也不会默认添加。

为了添加额外的填充以防止裁剪,调用 setShiftDrawingOffsetForStartOverhang
英文中被裁剪的文字示例

<TextViewandroid:fontFamily="cursive"android:text="java" />

英文中未被裁剪的文字示例

<TextViewandroid:fontFamily="cursive"android:text="java"android:useBoundsForWidth="true"android:shiftDrawingOffsetForStartOverhang="true" />

印地语中被裁剪的文字示例

<TextViewandroid:text="คอมพิวเตอร์" />

印地语中未被裁剪的文字示例

<TextViewandroid:text="คอมพิวเตอร์"android:useBoundsForWidth="true"android:shiftDrawingOffsetForStartOverhang="true" />

App兼容

  1. 着重测试应用在 Android 15 上的兼容性,因为更多设备正在进入该计划。
  2. 未来几周内,预计会有更多用户在 Android 15 上尝试你的应用,并提出问题。
  3. 为了测试兼容性,安装已发布的应用程序在运行 Android 15 beta 的设备或模拟器上,并测试所有应用程序的流程。
  4. 需要审查行为变化以便集中测试。
  5. 解决任何问题后,尽快发布更新。
  6. 平台稳定性里程碑预计将于 2024 年 6 月达到,届时将提供最终的 SDK/NDK API、最终的内部 API 和面向应用的系统行为。
  7. 在正式发布之前,你将有几个月的时间进行最终测试。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 植物大战僵尸

文章目录 效果图项目结构实现思路源代码 效果图 项目结构 实现思路 下面是代码的实现思路&#xff1a; 导入必要的库和模块&#xff1a;首先&#xff0c;我们导入了Python的os、time库以及pygame库&#xff0c;还有植物大战僵尸游戏中用到的各个植物和僵尸的类。 初始化游戏和…

AI写作工具的革命:AIGC如何提升内容生产效率

AIGC&#xff0c;即人工智能生成内容&#xff0c;是一种新兴的内容生产方式&#xff0c;它利用人工智能技术来自动生成文本、图像、音频、视频等多种形式的内容即进入实际应用层面。 所以AI不再是高深的、让人望尘莫及的算力算法&#xff0c;而是真实地贴近了我们的生活&#…

VectorDBBench在windows的调试

VectorDBBench在windows的调试 VectorDBBench是一款向量数据库基准测试工具&#xff0c;支持milvus、Zilliz Cloud、Elastic Search、Qdrant Cloud、Weaviate Cloud 、 PgVector、PgVectorRS等&#xff0c;可以测试其QPS、时延、recall。 VectorDBBench是一款使用python编写的…

鸿蒙ArkUI-X跨语言调用说明:【平台桥接(@arkui-x.bridge)】

平台桥接(arkui-x.bridge) 简介 平台桥接用于客户端&#xff08;ArkUI&#xff09;和平台&#xff08;Android或iOS&#xff09;之间传递消息&#xff0c;即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。 以Android平台为例&#xff0c;Ark…

OM电商系统asp.net

OM电商系统&#xff0c;可以让顾客全面了解商品的详细信息&#xff0c;消除网上购物的信息不对称问题。通过商品分类来组织众多的商品&#xff0c;方便顾客找到所需要的商品。提供客服顾客互动机制&#xff0c;提高顾客的参与度。通过设计合理的订单处理流程&#xff0c;提高顾…

第一个Flutter3项目

配置flutter国内源 首先&#xff0c;配置flutter的国内源&#xff1a; env:PUB_HOSTED_URL"https://pub.flutter-io.cn"; env:FLUTTER_STORAGE_BASE_URL"https://storage.flutter-io.cn"配置gradle国内源 修改gradle\wrapper\gradle-wrapper.properties…

使用Python操作Jenkins

大家好&#xff0c;Python作为一种简洁、灵活且功能丰富的编程语言&#xff0c;可以与各种API轻松集成&#xff0c;Jenkins的API也不例外。借助于Python中的python-jenkins模块&#xff0c;我们可以轻松地编写脚本来连接到Jenkins服务器&#xff0c;并执行各种操作&#xff0c;…

MySQL触发器实战:自动执行的秘密

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 MySQL触发器实战&#xff1a;自动执行的秘密 前言触发器的定义和作用触发器的定义和作用触发器的…

PostgreSQL发展史

PostgreSQL是一个开源的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;其历史可以追溯到上世纪80年代。以下是对PostgreSQL发展史的深入解析&#xff1a; 1980年代&#xff1a;起源 1.Ingres 项目 1977年&#xff0c;Michael Stonebraker 和他的团队…

怎样消除工人们对六西格玛培训的抵触情绪?

近年来&#xff0c;企业为了提高产品质量、优化生产流程&#xff0c;纷纷引入了六西格玛管理方法。然而&#xff0c;在实施过程中&#xff0c;不少企业却遭遇了工人们对六西格玛培训的抵触情绪。这种情绪的存在不仅阻碍了六西格玛的推广和应用&#xff0c;也影响了企业的整体运…

Java | Leetcode Java题解之第102题二叉树的层序遍历

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> levelOrder(TreeNode root) {Queue<TreeNode> queue new LinkedList<>();List<List<Integer>> res new ArrayList<>();if (root ! null) queue.a…

1104. 二叉树寻路

1104. 二叉树寻路 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_1104二叉树寻路 错误经验吸取 原题链接&#xff1a; 1104. 二叉树寻路 https://leetcode.cn/problems/path-in-zigzag-labelled-binary-tree/description/ 完成情况&a…

【系统架构师】-案例篇(十五)SOA、微服务与数据库

1、可复用构件应具备哪些属性 可用性&#xff1a;构件必须易于理解和使用。 质量&#xff1a;构件及其变形必须能正确工作。 适应性&#xff1a;构件应该易于通过参数化等方式在不同语境中进行配置。 可移植性&#xff1a;构件应能在不同的硬件运行平台和软件环境中工作。 可变…

用WPS将多张图片生成一个pdf文档,注意参数设置

目录 1 新建一个docx格式的文档 2 向文档中插入图片 3 设置页边距 4 设置图片大小 5 导出为pdf格式 需要把十几张图片合并为一个pdf文件&#xff0c;本以为很简单&#xff0c;迅速从网上找到两个号称免费的在线工具&#xff0c;结果浪费了好几分钟时间&#xff0c;发现需要…

文本匹配.grep与Select-String用法对比

Linux Shell与PowerShell上匹配字符串 grep与Select-String用法对比 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

平衡二叉树的构建(理论,部分函数代码)

平衡二叉树是二叉排序树的一种特殊情况&#xff0c;平衡二叉树的出现是为了在最坏情况下的时间复杂度仍然是对数级别O(logn)&#xff0c;从而保证了高效的搜索、插入和删除操作。 举个例子&#xff0c;如果有一个数组是&#xff1a;1&#xff0c;2&#xff0c;3。如果只简单的…

汇编原理(三)编程

源程序&#xff1a; 汇编指令&#xff1a;有对应的机器码与其对应 伪指令&#xff1a;无对应的机器码&#xff0c;是由编译器来执行的指令&#xff0c;编译器根据伪指令来进行相关的编译工作。 ex1:XXX segment、XXX ends这两个是一对成对使用的伪指令&#xff0c;且必须会被用…

【Go专家编程——内存管理——逃逸分析】

逃逸分析 逃逸分析&#xff08;Escape Analysis&#xff09;是指由编译器决定内存分配的位置&#xff0c;不需要程序员决定。 在函数中申请一个新的对象 如果分配在栈上&#xff0c;则函数执行结束后可自动将内存回收如果分配在堆上&#xff0c;则函数执行结束后可交给GC&…

FLUKE福禄克DSX-5000或者DSX-8000如何做外部串扰测试之实践篇

近期&#xff0c;有很多朋友问如何使用DSX5000或者DSX8000测外部串扰&#xff1f; 外部串扰测试在判定外部线缆是否对网络传输造成影响的重要一环。 直接上干货&#xff0c;测试步骤如下&#xff1a; 第一步:对主机和副机进行基准设置&#xff0c;保持同步!官方是建议每24小时…

【机器学习】探究DQN通过训练来解决AI序列决策问题

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …