android14预览版介绍及解读

news2025/6/2 0:45:22

前言:

android14快要来了,最近2月8日,android14的第一个开发者预览版发布了,正式版大约会和往常一样,大概率在六月份左右推出,八九月份时会有国内会有第一批手机支持安卓14。所以,本文就带你来了解一下安卓14的变化吧。

本文主要介绍以下内容:
1.谷歌官方英文文档翻译。
2.挑重点讲解android14的变化对开发者的影响。

一.android14开发者预览介绍

以下介绍主要来源于谷歌对英文文档的翻译,部分内容翻译不准确的,作者手动帮忙改掉了。
官方文档地址:
https://android-developers.googleblog.com/2023/02/first-developer-preview-android14.html

1.Android14的第一个开发者预览版

Android14的第一个开发者预览版
2023年2月8日
发布者:工程副总裁DaveBurke

为数十亿Android用户提供良好的服务,需要我们/Android硬件制造商以及安卓社区之间通力协作。
今天,我们发布了Android14的第一个开发者预览版,您在这些预览版中的反馈,是让Android更好地服务于所有人的关键。Android14继续致力于提高开发人员的工作效率,同时增强性能、隐私、安全性和用户自定义。此预览只是一个开始,随着发布周期的推进,我们将分享更多内容。
Android全年不断增强功能和提供新特性,您在Android14开发者预览版和季度平台发布(QPR)测试版计划的反馈,会帮助Android在不断改进方面发挥着关键作用。Android14开发者网站提供了更多关于预览版的信息,包括Pixel的下载和发布时间表。我们期待听到您的想法,并提前感谢您一直以来的帮助,使Android成为适合所有人的平台。

2.跨设备和外形规格方面的工作

Android14建立在Android12L和13中支持平板电脑和可折叠外形的基础之上。为了帮助您构建适应不同屏幕尺寸的应用程序,我们创建了窗口大小类、滑动窗格布局、Activity嵌入和带约束的盒子等,所有这些功能都在JetpackCompose中受支持。对于每个版本,我们的目标是让您更轻松地在所有Android平台上优化您的应用程序。
为了帮助简化您的应用程序准备工作,我们更新了针对大屏幕的应用程序质量指南,并提供了有关构建大屏幕和可折叠设备的更多学习机会。大屏幕画廊包含经过验证的设计模式以及围绕您的应用程序支持的市场的设计灵感,例如社交和通信、媒体、生产力、购物和阅读应用程序。
多设备体验是Android未来的重要组成部分。您今天就可以开始使用跨设备SDK的预览版,让您能够有丰富的体验,这些体验可以直观地跨不同的设备和外形规格工作,而且还会有更多。

简化后台工作

Android14继续努力优化应用程序协同工作的方式,改善系统健康状况和电池寿命,并改善最终用户体验。

JobScheduler和前台服务的更新和添加

执行一些后台工作比必要的工作更复杂,例如在WiFi可用时下载大文件。我们正在为这项工作创建一个标准路径,以简化您的应用程序开发并可能改善用户体验。我们也明确了前台服务的使用范围,只为最高优先级的面向用户的任务保留它们,以便Android可以改善资源消耗和电池寿命。
在Android14中,我们正在对现有的AndroidAPI(前台服务和JobScheduler)进行更改,包括为用户启动的数据传输添加新功能,以及声明前台服务类型的更新要求。用户启动的数据传输作业将使管理用户启动的下载和上传更加容易,特别是当它们需要限制时,例如仅在Wi-Fi上下载。声明前台服务类型的要求允许您清楚地定义应用程序后台工作的意图,同时明确哪些用例适合前台服务。此外,GooglePlay将推出新政策以确保正确使用这些API,更多细节即将推出。

优化广播

我们对内部广播系统进行了多项优化,以提高电池寿命和响应速度。虽然大多数优化是Android内部的,不会影响您的应用程序,但我们已经调整了应用程序进入缓存状态后接收Context注册广播的方式。对上下文注册的接收者的广播可能会排队,并且只有在它脱离缓存状态后才会传递给应用程序。此外,一些重复的上下文注册广播,例如BATTERY_CHANGED,一旦应用程序脱离缓存状态,可能会在交付之前合并为一个最终广播。

精确的Alarms

调用精确的Alarms会显著影响设备的资源,例如电池寿命。因此在Android14中,新安装的针对Android13+(SDK33+)的非时钟或日历应用必须请求用户授予它们SCHEDULE_EXACT_ALARM特殊权限,然后才能设置精准的Alarms。应用程序可以通过意图切换此权限将用户引导至设置页面,如果可能的话我们鼓励您评估您的用例并选择更灵活的计划替代方案。
targetSDK大于33并且依赖精确定时作为其核心应用工作流程的一部分的时钟和日历应用,需要在升级或安装时声明USE_EXACT_ALARM权限。除非它们符合政策语言的要求,否则Play商店将会不允许此类应用发布其版本。

3.定制化

我们将继续确保Android用户可以根据他们的个人需求调整他们的体验,包括增强的可访问性和国际化功能。

具有非线性缩放的更大字体

从Android14开始,用户将能够将字体放大到200%。以前,Pixel设备上的最大字体大小比例为130%。

为了缓解文本过大的问题,从Android14开始,系统会自动应用非线性字体缩放曲线。这确保已经足够大的文本不会以与较小文本相同的速度增长。

在Android14中,上图中左侧为文本原始比例100%(无缩放)、中间为标准缩放(200%)和右侧非线性缩放(200%),你可以参考他们之间的差异,您可以使用辅助功能>显示大小和文本设置中的字体大小选项,以最大字体大小测试您的应用程序UI。确保调整后的大文本大小设置反映在UI中,并且不会导致文本被截断。我们的文档有更多关于最佳实践的内容。

每个应用程序的语言首选项

您可以使用LocaleManager.setOverrideLocaleConfig动态更新应用的localeConfig,以自定义Android设置中每个应用语言列表中显示的语言集。这允许您自定义每个区域的语言列表、运行A/B实验,并在您的应用程序使用服务器端本地化推送时提供更新的语言环境。

IME现在可以使用LocaleManager.getApplicationLocales了解当前应用程序的UI语言以更新键盘上的语言。

语法变形API

GrammaticalInfectionAPI允许您更轻松地为使用具有语法性别的语言的用户添加支持。例如,

男性:“Vousêtesabonnéà…”

女性:“Vousêtesabonnéeà…”

中性:“Abonnementà…activé”

语法性别是语言固有的,在某些非英语语言中不容易解决。与必须在每个字符串基础上应用的ICU中的SelectFormat相比,这个新的API减少了支持查看者性别(谁正在查看UI;而不是正在谈论谁)的工作。

要显示个性化翻译,您只需为受影响语言的每个语法性别添加变形的翻译并集成API。

4.隐私和安全

运行时接收器

targetSDK=14的应用,动态广播接受者Context.registerReceiver()注册时必须标明“对外”或“不对外”,这是之前版本清单级工作的延续。点击这里了解更多。

更安全的隐式Intent

为防止恶意应用程序拦截意图,目标为Android14的应用程序中未表明目标package的应用将会被限制其启动功能。在这里了解更多。

更安全的动态代码加载

动态代码加载(DCL)为恶意软件和漏洞利用引入了出口,因为动态下载的可执行文件可能会被意外操纵,从而导致代码注入。目标为Android14的应用,需要将动态加载的文件标记为只读。在这里了解更多。

阻止安装应用程序

恶意软件通常以较老的targetSDK为目标,以绕过较新Android版本中引入的安全和隐私保护。为了防止这种情况,从Android14开始,targetSdkVersion低于23的应用将无法安装。选择此特定版本是因为某些恶意软件应用程序使用targetSdkVersion22以避免受到Android6.0(API级别23)于2015年引入的运行时权限模型的约束。

在设备升级到Android14时,targetSdkVersion低于23的任何应用都将保持之前的安装状态。

您可以使用以下ADB命令测试针对较旧API级别的应用:

adbinstall–bypass-low-target-sdk-block文件名.apk

凭据管理器和密钥支持

我们最近发布了CredentialManager的alpha版本,这是一种新的JetpackAPI,可让您简化用户的身份验证过程,同时还通过支持密钥来提高安全性。密钥是密码和其他可钓鱼身份验证因素的更安全替代品,并且对用户来说更方便(它们只需要生物识别刷卡即可在任何设备上安全登录)。在这里。

5.应用兼容性

我们正在努力通过优先考虑应用程序兼容性来使每个平台版本的更新更快、更顺畅。在Android14中,我们对大多数面向应用的更改进行了选择加入,以便您有更多时间进行任何必要的应用更改,并且我们更新了我们的工具和流程以帮助您提早准备。

OpenJDK17支持-此预览包括对300个OpenJDK17类的访问。我们正在努力在即将推出的开发人员预览版中完全启用Java17功能。这些包括记录类、多行字符串和模式匹配instanceof。得益于GooglePlay系统更新(ProjectMainline),超过6亿台设备能够接收包含这些更改的最新Android运行时(ART)更新。为应用程序提供跨设备的更一致、更安全的环境,并为用户提供独立于平台版本的新特性和功能,这是我们承诺。

更轻松地测试和调试更改-为了让您更轻松地测试可能影响您的应用程序的选择加入更改,我们将在今年再次将其中的许多更改设为可切换。通过切换,您可以从开发人员选项或adb中单独强制启用或禁用更改。从这里获得更多信息。
开发人员选项中的应用程序兼容性切换

平台稳定性里程碑-与去年一样,我们提前让您知道我们的平台稳定性里程碑,让您有更多时间规划应用程序兼容性工作。在这个里程碑,我们将提供最终的SDK/NDKAPI以及最终的内部API和面向应用程序的系统行为。我们预计在2023年6月达到平台稳定性,从那时起您将有几周的时间在正式发布前进行最终测试。发布时间表的详细信息在这里。

6.开始使用Android14

DeveloperPreview包含您尝试Android14功能、测试您的应用以及向我们提供反馈所需的一切。要使用平板电脑和可折叠设备测试您的应用程序,最简单的入门方法是在AndroidStudioSDK管理器的最新预览版中使用平板电脑或可折叠配置中的AndroidEmulator。对于手机,您可以立即开始使用Pixel7Pro、Pixel7、Pixel6a、Pixel6Pro、Pixel6、Pixel5a5G、Pixel5或Pixel4a(5G)设备上的系统映像。如果您没有Pixel设备,则可以在AndroidStudio中将64位系统映像与AndroidEmulator结合使用。

为了获得Android14的最佳开发体验,我们建议您使用最新的AndroidStudioGiraffe预览版(或更新的Giraffe+版本)。设置完成后,您应该执行以下操作:

试用新功能和API-在开发人员预览的早期阶段,您的反馈至关重要。在反馈页面上报告我们跟踪器中的问题。
测试您当前应用的兼容性——了解您的应用是否受到Android14中默认行为变化的影响;将您的应用程序安装到运行Android14的设备或模拟器上,并对其进行广泛测试。
使用选择加入更改测试您的应用程序-Android14具有选择加入行为更改,这些更改只会影响您的应用程序以新平台为目标时。尽早了解和评估这些变化很重要。为了更容易测试,您可以单独打开和关闭更改。
我们将在整个Android14发布周期中定期更新预览系统映像和SDK。此初始预览版仅供开发人员使用,不适合日常使用或消费者使用,因此我们仅通过手动下载提供它。一旦您手动安装了预览版本,您将自动通过无线方式获得未来所有预览版和Beta版的更新。在这里。

如果您打算从Android13QPRBeta计划转移到Android14DeveloperPreview计划并且不想擦除您的设备,我们建议您现在转移到DeveloperPreview1。否则,您可能会遇到Android13Beta的构建日期更新的时间段,这将阻止您在不执行数据擦除的情况下直接进入Android14DeveloperPreview。
当我们发布Beta版时,我们也将邀请消费者试用Android14,届时我们将开放AndroidBeta计划的注册。目前,请注意AndroidBeta程序尚不适用于Android14。

如需完整信息,请访问Android14开发者网站。

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

二.重点变化介绍

这一章,简单来说就是对上面文档中核心内容的解读。

JobScheduler和前台服务的更新和添加

一种推荐的文件下载方式

首先谷歌给我们推荐了一种使用前台Service进行文件下载的方式:
具体流程在下面的链接中,这里就不详细介绍了。答题流程就是声明权限,使用JobScheduler来完成具体的下载操作,并且绑定Notification让用户可知。
https://developer.android.com/about/versions/14/changes/user-initiated-data-transfers

前台Service需要主动声明其所属的类型

其次前台Service在android14中需要主动声明其所属的类型,如下面代码中的mediaPlayback类型

<manifest ...>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYPACK" />
    <application ...>
      <service
          android:name=".MyMediaPlaybackService"
          android:foregroundServiceType="mediaPlayback"
          android:permission="android.permission.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYPACK"
          android:exported="false">
      </service>
    </application>
</manifest>

广播的变化

后台广播接收者将会延时收到广播消息

android14开始,如果应用切换到了后台,并且其对应的进程已经进入了缓存进程状态,则此时广播接收者有可能就收不到广播了,只有其进程切换回正常状态后,才会收到这个迟到的广播,而且再次期间有多个广播的话,最终有可能会被合并为一个广播消息。
所以,如果后台进程想通过监听广播来完成某些操作的话,有可能要绑定一个前台服务使其不会变为缓存进程状态。
缓存进程的状态可以参照谷歌的官方文档:https://developer.android.com/guide/components/activities/process-lifecycle?hl=zh-cn

动态广播接收者注册需要声明其使用范围

这个功能,其实android13上就已经有了,只是android13需要启动兼容性框架。
使用方式如下

context.registerReceiver(sharedBroadcastReceiver, intentFilter,
    RECEIVER_EXPORTED);
context.registerReceiver(privateBroadcastReceiver, intentFilter,
    RECEIVER_NOT_EXPORTED);

字体的优化

android14开始,用户可以将字体放大到200%了,而之前的的比例为130%。并且还增加了一个新的功能,如果字体本身已经较大,则不会像小的字体一样按照同样的比例增大。

代码动态加载的变化

我们使用中有很多动态加载代码的场景,加载jar或者aar文件。android14开始,如果仍要加载这些代码,需要把jar或者aar文件声明为仅可读,从而避免动态修改AAR造成的代码入侵的文件。

val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
    // Set the file to read-only first to prevent race conditions
    jar.setReadOnly()
    // Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)

targetSDK<23的应用将无法在安卓14上安装

targetSDK<23的应用将无法在安卓14上安装。按照谷歌的说法,之所以设置为23(android6.0),是因为从6.0开始引入的动态权限申请,如果targetSDK<23会有绕过动态权限申请的风险。
但是实际上,做了一个实验,发现其实还是绕不过去的,targetSDK=22的话,会在安装之后首次启动的弹出权限选择的页面,让用户来选择是否给予权限,如果不选择授予,仍然是没有权限的。
在这里插入图片描述

JDK17的支持

android14开始支持JDK17,当然不是全部,首批只有300个类,包括记录类、多行字符串和模式匹配 instanceof等。

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

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

相关文章

为什么要用频谱分析仪测量频谱?

频谱分析仪是研究电信号频谱结构的仪器&#xff0c;用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量&#xff0c;可用以测量放大器和滤波器等电路系统的某些参数&#xff0c;是一种多用途的电子测量仪器。从事通信工程的技术人员&#xff0c;在很多时候…

免费下载学术文献的网站,好用!

推荐几款好用的免费下载学术文献网站&#xff0c;让你的查找文献环节更加事半功倍&#xff01; 1、Open Access Library&#xff08;OALib&#xff09;图书馆让学者可以免费下载学术文献和论文&#xff0c;并在这个平台上发表自己的论文。提供Open Access数据库资源。 2、文献…

Spring Security实现RBAC权限模型练习

1.Spring Security介绍 Spring Security的核心功能就是认证、授权、攻击防护&#xff0c;Spring Boot项目启动之后会自动进行配置&#xff0c;其核心就是一组链式过滤器。 如下图所示&#xff0c;对于一个用户请求&#xff0c;Username Password Authentication Filter验证用…

2022年API安全研究报告

导读 API应用的增速与其安全发展的不平衡,使其成为恶意攻击的首选目标,围绕API安全的攻防较量愈演愈烈。 2022年API安全风险概况 2022年平均每月遭受攻击的API数量超21万 2022年全年平均每月遭受攻击的API数量超过21万,第二季度(4-6月)遭受攻击的API数量达到高峰,月均…

经典文献阅读之--IGP2(可解释性目标的自动驾驶预测与规划)

0. 简介 对于自动驾驶的预测和规划而言&#xff0c;能够有效的对目标产生可解释性是非常有必要的&#xff0c;而《Interpretable Goal-based Prediction and Planning for Autonomous Driving》文中就提出了一种综合的自动驾驶预测和规划系统&#xff0c;它利用合理的逆规划来…

php mysql娱乐场所运营管理系统

目 录 1 背景与意义 3 1.1 研究背景 3 1.2 国内外发展状况研究 3 2 系统开发环境与技术 4 2.1 PHP介绍 4 2.2 MYSQL介绍 5 2.3 APACHE介绍 6 2.4 dreameaver介绍 7 2.5 wamp介绍 7 3 系统分析 8 3.1 系统可行性分析 8 3.1.1 技术可行性 …

【编程基础之Python】1、初始Python

【编程基础之Python】1、初始Python初始Python什么是PythonPython的运行过程Python的应用领域如何学好Python初始Python Python是一种跨平台的、开源免费的、解释型的、面向对象的高级编程语言。 Python的应用领域非常广泛&#xff0c;包括客户端程序、服务器程序、移动端程序…

Redis未授权漏洞蜜罐模拟与捕获分析

1.概述 文章主要分析Redis未授权漏洞的原理及形成原因&#xff0c;使用vulhub靶场进行漏洞复现&#xff0c;在了解漏洞原理并复现的基础上使用golang编写蜜罐代码进行模拟&#xff0c;开放端口在网上捕获真实存在的恶意攻击行为&#xff0c;对恶意样本进行分析&#xff0c;总结…

C++与Lua交互实例 -- 矩阵的加减乘除(版本二)

C与Lua交互实例 – 矩阵的加减乘除&#xff08;版本二&#xff09; TIPS&#xff1a;关于使用矩阵的加减乘除测试C与Lua的交互以及下面没讲述到的知识点可以阅读第一版&#xff1a; https://blog.csdn.net/qq135595696/article/details/128960951 同时下面两个方式矩阵的数据都…

爬虫JS逆向思路 - - 扣JS(data解密)

网络上几千块都学不到的JS逆向思路这里全都有&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 本系列持续更新中&#xff0c;三连关注不迷路&#x1f44c;&#x1f3fb; 干货满满不看后悔&#x1f44d;&#x1f44d;&#x1f44d; ❌注意…

电机过流的一次bug排查记录

一、bug现象描述如下&#xff1a; 有一天&#xff0c;某员工给自己的组件换一个语音模块&#xff0c;其中电机和主板是通过单总线连接&#xff0c;据该员工回忆曾经在换语音芯片时曾将电源线不小心短路过。 电机已经DVT试产&#xff0c;功能和硬件测试已经通过&#xff0c;但是…

小白系列Vite-Vue3-TypeScript:007-配置axios并封装api

上一篇我们介绍了ViteVue3TypeScript项目中Element Plus的安装和配置&#xff0c;本篇我们来介绍一下如何配置axios并封装api。axios是一个基于promise的HTTP库&#xff0c;可以用在浏览器和node.js中&#xff0c;其最大的亮点就是支持了ES6里的Promise Api。废话不多说&#x…

Node =>Express学习

1.Express 能做什么 能快速构建web网站的服务器 或 Api接口的服务期 Web网站服务器&#xff0c;专门对外提供Web网页资源的服务器Api接口服务器&#xff1a;专门对外提供API接口的服务器 2.安装 在项目所处的目录中&#xff0c;运行以下命令&#xff0c;简装到项目中了 npm …

ChatGPT与马斯克 在 “ 遥感 ” 中的初探索

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 1前言 文章开始前&#x…

栈和队列基本原理

栈和队列基本原理1.栈1.1 栈基本原理1.2. 栈操作步骤1.2.1 插入数据流程【压栈】1.2.2 移除数据流程【出栈】1.3. 栈代码实现2.队列2.1 队列基本原理2.2 队列操作步骤2.2.1 插入数据2.2.2 移除数据2.3. 队列代码实现3.栈与队列对比1.栈 1.1 栈基本原理 栈顶【末尾】&#xff…

突破边界:“超融合+”带来的商业化精益之路

相信大家都看了《流浪地球2》&#xff0c;其中人类一次次超越极限&#xff0c;以勇气和责任完成伟大征程的情节让我们深深感动。在现实的科技发展中&#xff0c;我们可能不会像科幻作品那样完成惊险万分地完成突破。但超越极限&#xff0c;却时时刻刻发生在科技产业当中。“超融…

K_A12_002 基于STM32等单片机采集光敏电阻传感器参数串口与OLED0.96双显示

K_A12_002 基于STM32等单片机采集光敏电阻传感器参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC光敏电阻传感器模块1.2、STM32F103C8T6光敏电阻传感器模块五、基…

星河案例 | 冲量在线助力中国电信打造数据要素融通与AI能力开放外拓新范式

2022 年大数据“星河”案例征集活动由中国信息通信研究院、中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织&#xff0c;旨在促进大数据技术产品及相关产业发展&#xff0c;加快培育数据要素市场、充分发挥数据作为生产要素的独特价值&#xff0c;树立行业标杆…

OnGUI Box 控件||Unity 3D OnGUI 常用控件

OnGUI Box 控件Unity 3D Box 控件用于在屏幕上绘制一个图形化的盒子。Box 控件中既可以显示文本内容&#xff0c;也可以绘制图片&#xff0c;或两者同时存在。GUIContent 和 GUIStyle 对于 Box 控件同样适用&#xff0c;既可以用来修饰 Box 控件的文本颜色&#xff0c;也可以用…

第2章 信息系统项目管理基础

项目管理基础 项目的概念 项目是为提供一项独特产品、服务或成果所做的临时性努力。 项目的特点 主要特点&#xff08;PMI归纳的&#xff09; 临时性&#xff0c;独特的产品、服务或成果&#xff0c;逐步完善其他特点 资源约束&#xff1a;资源成本是项目成功实施的约束条件之…