Android15 Beta更新速览

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. 在正式发布之前,你将有几个月的时间进行最终测试。

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

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

相关文章

【Flowable 7】学习笔记 01 - 初始化数据库表创建流程(源码)

文章目录 前言版本说明配置1、引擎配置初始化2、SQL 执行创建表2.0、创建表概览&#xff08;创建表数目&#xff1a;38&#xff09;2.1、基础组件表创建&#xff08;以 common 组件为例&#xff09;2.2、changelog 组件表创建&#xff08;基于 liquibase&#xff09;2.3、Engin…

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

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

ComfyUI工作流网站

https://openart.ai/home https://comfyworkflows.com/ https://civitai.com/

5G工厂长啥样

5G工厂是一种新型的工业互联网基础设施&#xff0c;利用5G为代表的新一代信息通信技术集成&#xff0c;打造新型工业互联网基础设施。在5G工厂中&#xff0c;自动化和智能化设备广泛使用&#xff0c;高度互联的工厂网络得以实现&#xff0c;远程监控和管理成为可能&#xff0c;…

220V转5V电源芯片,为您的微控制器、继电器和WiFi/蓝牙模块提供动力

220V转5V电源芯片&#xff0c;为您的微控制器、继电器和WiFi/蓝牙模块提供动力标题&#xff1a; 在我们生活的数字化世界中&#xff0c;电源芯片的重要性不容忽视。今天&#xff0c;我们要向您介绍一款适用于各种应用的电源芯片&#xff1a;220V转5V电源芯片。该芯片可从交流电…

Qt 项目(CMake)支持多国语言(2024/05)

目录 1.在工程手动创建languages文件夹2.修改CMakeLists.txt3.在qml上随便添加一下文字内容4.执行CMake 参考:Qt 项目(CMake)设置国际化支持 1.在工程手动创建languages文件夹 2.修改CMakeLists.txt set(TS_FILES"${CMAKE_SOURCE_DIR}/languages/aidi_zh_CN.ts"&qu…

享受当下,还是留待未来?一项fMRI与眼动追踪技术的联合研究

摘要 时间贴现(temporal discount)是指个体对奖励的估计会随着时间流逝而下降的心理现象。具体而言&#xff0c;当获得奖励的时间以日期(日期条件&#xff1b;例如&#xff0c;2023年6月8日)而不是延迟(延迟条件&#xff1b;例如&#xff0c;30天)呈现时&#xff0c;贴现率较低…

(二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2

层序遍历 10 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 综合代码&#xff1a; class Solution{public List<List<Integer>> resList new ArrayList<List<Integer>>();public List<List<…

springboot项目部署到linux服务器

springboot后端 修改前 修改后 重新生成war包 war上传到linux的tomcat的webapps下 其他环境配置和macOS大差不差 Tomcat安装使用与部署Web项目的三种方法_tomcat部署web项目-CSDN博客

如何高效测试防火墙的NAT64与ALG应用协议转换能力

在本文开始介绍如何去验证防火墙&#xff08;DUT&#xff09;支持NAT64 ALG应用协议转换能力之前&#xff0c;我们先要简单了解2个比较重要的知识点&#xff0c;即&#xff0c;NAT64和ALG这两个家伙到底是什么&#xff1f; 网络世界中的“翻译官” - NAT64技术 简而言之&…

紫光展锐前沿探索 | 满足未来6G多差异化应用场景的技术体系思考

在6G架构/系统设计中&#xff0c;紫光展锐提出了未来6G空口“一体多翼”的技术体系概念&#xff0c;即“Big-Lite Multi-RAT”。本文将详细对该技术体系展开介绍。 “一体多翼”技术体系通过 “体”&#xff08;Big RAT&#xff09;和“翼”&#xff08;Lite RAT&#xff09;的…

Visual Studio中调试信息格式参数:/Z7、/Zi、/ZI参数

一般的调试信息都保存在pdb文件中。 Z7参数表示这些调试信息保存到OBJ目标文件中&#xff0c;这样的好处是不需要单独分发PDB文件给下游。Zi就是把所有的调试信息都保存在pdb文件中&#xff0c;以缩小发布文件的大小。ZI和Zi类似&#xff0c;但是增加了热重载的能力&#xff1…

电火灶是燃气灶吗?这“火”又是怎么回事?

电火灶并非传统的燃气灶&#xff0c;它们在能源使用和工作原理上有着显著的区别。电火灶&#xff0c;又名电焰灶或电燃灶&#xff0c;属于新能源厨房灶具行列&#xff0c;它使用清洁的电能作为唯一能源&#xff0c;而不是依赖天然气或液化气等燃料。 具体来说&#xff0c;电火灶…

本地部署Whisper实现语言转文字

文章目录 本地部署Whisper实现语言转文字1.前置条件2.安装chocolatey3.安装ffmpeg4.安装whisper5.测试用例6.命令行用法7.本地硬件受限&#xff0c;借用hugging face资源进行转译 本地部署Whisper实现语言转文字 1.前置条件 环境windows10 64位 2.安装chocolatey 安装chocol…

力扣刷题--1528. 重新排列字符串【简单】

题目描述 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s &#xff0c;其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 示例 1&#xff1a; 输入&#xff1a;s “codeleet”, indices [4,5,6,7,0,2,1,3] 输…

创建你的RedTeam基础架构

随着RedTeaming行业的发展&#xff0c;我们对构建可靠环境的需求也越来越高。至关重要的是要拥有维护健壮的基础架构的能力&#xff0c;该基础架构要保证一旦出现问题就可以重新创建&#xff0c;更重要的是&#xff0c;我们需要确保环境在部署时不会出现问题。 今天&#xff0c…

2024最新版本激活Typora,1.8.10.0版本可用

​实测可用日期为&#xff1a;2024-05-28 目前最新版本 1.8.10.0 也是可以实现激活的 注&#xff1a;免修改注册表、不用修改时间&#xff0c;更不需要破解补丁 01、下载&安装 Typora 文件 从官网下载最新版本的 Typora&#xff0c;并安装 或者阿里云盘&#xff1a; htt…

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

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

如何更好进行多媒体展厅设计

1、明确设计目标 在展厅之前要明确设计目标&#xff0c;这包括了展厅的主题、目的和受众等&#xff0c;以及希望通过展厅传达的信息和形象。只有明确了设计目标&#xff0c;才能有针对性地进行设计&#xff0c;确保展厅的效果符合预期。 2、合理规划空间布局 空间布局要合理规划…

Android Service 启动流程

在早些年学习Android的时候&#xff0c;对Service有过总结&#xff0c;但是主要是如何去使用&#xff0c;注意事项&#xff0c;startService和bindService的区别。 Android Service_public int onstartcommand(intent intent, int flags-CSDN博客 但是今天从源码来总结下fram…