android14预览版介绍及解读

2023-11-06

前言:

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等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android14预览版介绍及解读 的相关文章

随机推荐

  • idea中java源码英文注释的翻译

    效果展示 操作步骤两步 安装translation插件 设置翻译引擎 安装translation插件 选择该插件 安装好后重启idea即可使用 设置翻译引擎 这里用有道翻译演示 注册好后在业务里面创建翻译接口 创建好后把id和密钥复制填上去
  • 入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

    入门深度学习 基于全连接神经网络的手写数字识别案例 python代码实现 一 网络构建 1 1 问题导入 如图所示 数字五的图片作为输入 layer01层为输入层 layer02层为隐藏层 找出每列最大值对应索引为输出层 根据下图给出的网络
  • java手工注入bean,Spring注入Bean的一些方式总结

    通过注解注入Bean 背景 我们谈到Spring的时候一定会提到IOC容器 DI依赖注入 Spring通过将一个个类标注为Bean的方法注入到IOC容器中 达到了控制反转的效果 那么我们刚开始接触Bean的时候 一定是使用xml文件 一个一
  • 常见数据库安装

    简介 本文记录了常用数据库 MySQL PostgreSQL MSSQL Oracle Redis MongoDB在Windows 及Linux Ubuntu 下 MSSQL Oracle除外 的安装 macOS可参考前两者 解决了Orac
  • win10家庭版找不到组策略gpedit.msc的解决方法

    废话不多说 直接上方法 注意的事项我会再后面讲到 1 打开记事本 在记事本中保存如下批处理内容 echo off pushd dp0 dir b systemroot Windows servicing Packages Microsoft
  • Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

    Windows系统调用架构分析 也谈KiFastCallEntry函数地址的获取 windows api 汇编 hook 存储 system 目录 为什么要写这篇文章 1 因为最近在学习 软件调试 这本书 看到书中的某个调试历程中讲了Win
  • proj.4的下载和编译

    简介 下载 编译 生成lib 简介 没啥好说的 地图坐标转换的库 下载 https github com OSGeo PROJ 选择tags下的最新版7 2 0 安装方法参考git下的安装说明 gt https proj org insta
  • Web3.0是什么?只需要记住这三个关键词

    作者 赛联区块链教育张群 2020年以后 科技发展一日千里 稍有不慎我们就会被社会淘汰 区块链 Web3是2022年最大风口 也是互联网未来发展趋势 Web3 0到底是什么 在给学员讲区块链课时我给大家用了这这三个词 保证你瞬时就能深刻理解
  • 2、k8s pod原理详解

    2 k8s pod原理详解 Kubernetes Pod 介绍 Pod 介绍与原理 POD操作实战 POD的创建和删除 pod的生命周期管理 资源的配额和限制 静态pod Init Containers k8s健康检查 POD镜像升级 po
  • 软件测试用例模板和例子_如何设计一个好的测试用例

    什么是测试用例 测试用例也叫测试案例 是在执行测试之前由测试人员编写的指导测试过程的重要文档 主要包括 用例编号 测试目的 测试步骤 预期结果等 注意 不同公司使用的用例模板可能存在差异 但都大同小异 为什么要写测试用例 1 防止测试点的遗
  • 数百款惠普打印机易受严重RCE漏洞影响

    聚焦源代码安全 网罗国内外最新资讯 编译 代码卫士 惠普发布了关于三个严重漏洞的安全公告 它们影响数百款 LaserJet Pro Pagewide Pro Office Jet Enterprise Large Format 和 Desk
  • C++程序如何编译运行

    下面是C 入门的hello world程序源码 include
  • 企业做数字化转型,该如何选择适合自己的数据可视化工具?

    企业该如何选择适合自己的数据可视化工具 A 公司准备进行数字化转型了 老板让我找一个BI工具 但是市面上的选择太多了 我到底是该看品牌还是该看功能呢 B 你了解过BI工具的设计路线吗 其实很多人都忽略了 这也是选BI的重要参考点之一 A B
  • axios拦截器作用及工作流程详解

    axios 拦截器 在请求或响应被then或catch处理之前拦截它们 作用 主要是在axios请求和响应之前拦截请求和响应数据 拦截器有两种 请求拦截器一般会统一在请求头中添加token 响应拦截一般会处理异常错误信息 以及401跳转登录
  • 使用delphi开发人工智能程序(环境搭建)

    1 下载P4D组件 1 下载 2 安装 设置libraries路径 D python4delphi master Source 编译和安装 成功 运行demo测试 D python4delphi master Demos Demo02
  • OGAI详解:AIStation调度平台如何实现大模型高效长时间持续训练

    大模型是当前通用人工智能产业发展创新的核心技术 目前国内已发布的生成式AI模型超过了100个 面向以大模型为核心的生成式AI开发与应用场景 近日浪潮信息发布了大模型智算软件栈OGAI Open GenAI Infra 元脑生智 为大模型业务
  • 【毕业设计】基于超声波智能跟随小车 - 单片机 物联网 stm32 c51

    文章目录 1 项目简介 2 课题背景 3 硬件说明 3 1 小车硬件设计 3 2 小车底座 3 3 无线收发器 3 4 超声波模块 3 5 直流电机和电源 3 6 目标携带装置 3 7 整体电路图 4 跟随系统的软件设计 4 1 方案一 4
  • Java+Selenium3方法篇30-Selenium中截图方法-TakeScreenshot

    前面几篇介绍了Actions类中两种方法 本来打算介绍右键 然后类似点击向下箭头这样操作 但是在现在的firefox和chrome都不能正常实现 记得之前selenium2 53是可以在firefox上实现的 本篇介绍Selenium中截图
  • 【小程序开发必备】微信小程序常用API全介绍,附示例代码和使用场景

    文章目录 人工智能福利文章 1 网络请求相关API 1 1 wx request 1 2 wx uploadFile 1 3 wx downloadFile 1 4 wx connectSocket 2 页面跳转相关API 2 1 wx n
  • android14预览版介绍及解读

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