Android15 Beta更新速览

news2024/9/25 15:26:32

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
英文中被裁剪的文字示例

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

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

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

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

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

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

<TextView
    android: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.coloradmin.cn/o/1705923.html

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

相关文章

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

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

Linux一键安装Docker、kkfileviewer

Linux一键安装Docker、kkfileviewer 一、安装docker 安装docker脚本 vi initDocker.sh脚本内容 #安装前先更新yum&#xff0c;防止连接镜像失败 yum -y update#卸载系统之前的docker&#xff08;可选择&#xff0c;我这里直接注释了&#xff09; #yum remove docker docker…

Geotools--生成等值线

好久没用geotools去写东西了&#xff0c;因为近几年一直在接触所谓数字孪生和可视化相关项目&#xff0c;个人的重心也往前端可视化去倾斜&#xff0c;在后端的开发上到变得停滞下来。 这次用的是geotools 28.4版本&#xff0c;生成等值线的方法在 <dependency><group…

html+CSS部分基础运用7

项目1 设计简易灯箱画廊 1.实验所需素材 在trees文件夹中提供一个MP3文件和18个JPG文件&#xff0c;设计页面时可以使用。 2.编程实现简易灯箱画廊&#xff0c;鼠标单击任一个图像超链接&#xff0c;在底部浮动框架中显示大图像&#xff0c;效果如图4-1所示的页面。 图4-1 简…

中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!

2024年5月14日&#xff0c;为进一步深化合作&#xff0c;促进业务共同发展&#xff0c;实现双方优势互补。中国移动云能力中心高级专家、郑州移动总经理助理邵根波、管城分公司政企部经理张文孟、航海东路分局张旭红莅临中创算力。中创董事长许伟威、副总经理杨光、技术总监刘朝…

Spring+SpringBoot面试总结(近两万字)

SpringSpringBoot面试总结 一、Spring Bean1.1、bean的生命周期&#xff08;对象的创建使用销毁&#xff09;1.1.1、准备工作1.1.2、创建Bean对象1.1.3、注册销毁 1.2、 bean的作用域1.2.1、配置方式 1.3、 spring 自动装配 bean 有哪些方式&#xff08;存疑存疑&#xff09;1.…

AI绘画Stable Diffusion【艺术写真】:蒙版法图生图,局部重绘实现AI艺术写真

大家好&#xff0c;我是设计师阿威 之前我分享过几篇使用SD插件换脸方式实现AI写真的教程&#xff0c;主要存在2个大的问题。 &#xff08;1&#xff09;人脸相似度 &#xff08;2&#xff09;生成的图片整体色调有时候会比较怪异 对于上面的问题&#xff0c;在对图片质量要…

条款9:利用destructors避免泄露资源

对指针说拜拜。承认吧&#xff0c;你从未真正喜欢过它&#xff0c;对不&#xff1f; 好&#xff0c;你不需要对所有指针说拜拜&#xff0c;但是你真的得对那些用来操控局部性资源(local resources&#xff09;的指针说莎唷娜拉了。 举个例子&#xff0c;你正在为“小动物收养…

Linux漏洞SSL/TLS协议信息泄露漏洞(CVE-2016-2183) - 非常危险(7.5分) 解决办法!升级openssl

漏洞情况 详细描述 TLS是安全传输层协议&#xff0c;用于在两个通信应用程序之间提供保密性和数据完整性。 TLS, SSH, IPSec协商及其他产品中使用的IDEA、DES及Triple DES密码或者3DES及 Triple 3DES存在大约四十亿块的生日界&#xff0c;这可使远程攻击者通过Sweet32攻击&…

不聚焦情绪,不精神内耗:成长的自我修炼

在我们的人生旅途中&#xff0c;总会遇到各种各样的困境和挑战。如何在逆境中保持积极的心态&#xff0c;专注于个人成长&#xff0c;是每一个人都需要面对和思考的问题。这篇文章将探讨如何不抱怨、不指责、不聚焦情绪、不精神内耗&#xff0c;专注于解决困境和个人成长。 问…

基于 IP 的 DDOS 攻击实验

介绍 基于IP的分布式拒绝服务&#xff08;Distributed Denial of Service, DDoS&#xff09;攻击是一种利用大量受控设备&#xff08;通常是僵尸网络&#xff09;向目标系统发送大量请求或数据包&#xff0c;以耗尽目标系统的资源&#xff0c;导致其无法正常提供服务的攻击方式…

swiftui基础组件Image加载图片,以及记载gif动图示例

想要在swiftui中展示图片&#xff0c;可以使用Image这个组件&#xff0c;这个组件可以加载本地图片和网络图片&#xff0c;也可以调整图片大小等设置。先大概看一下Image的方法有哪些可以用。 常用的Image属性 1.调整图像尺寸&#xff1a; 使用 resizable() 方法使图像可调整…

100个 Unity小游戏系列七 -Unity 抽奖游戏专题五 刮刮乐游戏

一、演示效果 二、知识点讲解 2.1 布局 void CreateItems(){var rewardLists LuckyManager.Instance.CalculateRewardId(rewardDatas, Random.Range(4, 5));reward_data_list reward_data_list ?? new List<RewardData>();reward_data_list.Clear();for (int i 0; …

知攻善防应急响应靶机训练-Web3

前言 本次应急响应靶机采用的是知攻善防实验室的Web-3应急响应靶机 靶机下载地址为&#xff1a; https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:xj123456xj123456 解题过程 第一题-攻击者的两个IP地址 直接查看apache的log日志搜索.php 发现…

AI助力科研:自动化科学构思生成系统初探

科学研究作为推动创新和知识进步的关键活动&#xff0c;在解决复杂问题和提升人类生活水平方面发挥着至关重要的作用。然而&#xff0c;科学研究的固有复杂性、缓慢的进展速度以及对专业专家的需求&#xff0c;限制了其生产力的提升。为了增强科研效率&#xff0c;本文提出了一…

12.Redis之补充类型渐进式遍历

1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…

据阿谱尔APO Research调研显示,2023年全球热喷涂涂料市场销售额约为110.37亿美元

根据阿谱尔 (APO Research&#xff09;的统计及预测&#xff0c;2023年全球热喷涂涂料市场销售额约为110.37亿美元&#xff0c;预计在2024-2030年预测期内将以超过4.82%的CAGR&#xff08;年复合增长率&#xff09;增长。 热喷涂涂层是指将熔融或加热的金属、合金或陶瓷等材料喷…

【数据结构】P1 数据结构是什么、算法怎样度量

1.1 基本概念与术语 数据&#xff1a; 数据是信息的载体&#xff0c;是所有能被计算机识别以及处理的符号。数据元素&#xff1a; 数据元素是数据基本单位&#xff0c;由若干 数据项 组成&#xff0c;数据项是构成数据元素最小的单位。 e . g . e.g. e.g. 数据元素如一条学生记…

ShardingSphere使用案例

文章目录 一、分表1. 项目架构搭建2. 数据库搭建3. 案例开发一、分库1. 创建新的库2. 修改配置文件一、分表 1. 项目架构搭建 创建Maven项目导入相关依赖<dependencies><

ArcgisPro3.1.5安装手册

ArcgisPro3.1.5安装手册 一、目录介绍: 二、安装教程&#xff1a; (1)安装顺序&#xff1a;最先安装运行环境&#xff08;runtime6.0.5&#xff09;,接着安装install里面的文件&#xff0c;最后复制path里面的文件替换到软件bin文件夹下即可。 (2)具体安装步骤&#xff…