前言
作为开发者,每个新版本发布之后SDK API接口有新的差异,对于我们来说很重要。
那么我们该如何了解相关差异?原先我也是通过搜索其他博主的文章进行了解的。
或者是自己在开发过程中碰见了相关的问题,然后才发现是新旧版本之间的差异造成的(印象最深刻)。
今天,我也来总结一下。
1. Android 13 API 33
变更:
- 移除了Google应用中SpeechService实现:(针对国内版不影响,因为不会使用到Google语音服务应用)。
- 使用JobScheduler 改进预提取作业处理:在 Android 13 中,系统现在会尝试确定应用下次启动的时间,并根据该估算值运行预提取作业。(如果没有用到JobSchedular 后台处理程序,这个可以忽略不影响)。
- 电池资源利用率:Android 13(API 级别 33)引入了电池资源利用率],它为系统提供了多种方法来更好地管理设备电池续航时间。(主要是厂商要关注的,普通开发特别是国内环境,可以不用在意。了解下就可以了)。
- 通知的运行时权限:Android 13新增了运行时权限:
android.permission.POST_NOTIFICATIONS
。此更改有助于用户专注于最重要的通知。(通知的权限拆分的更细了。) - 从剪贴板中隐藏敏感内容:如果您的应用允许用户将敏感内容(例如密码或信用卡信息)复制到剪贴板,则必须在调用
ClipboardManager#setPrimaryClip()
之前向 ClipData 的ClipDescription
添加一个标志。添加此标志可阻止敏感内容出现在内容预览中。(堵死通过剪贴板预览功能获取敏感信息的漏洞。) - 停止使用共享用户ID:如果应用使用已废弃的
android:sharedUserId
属性且不再依赖该属性的功能,则应改为采用其他机制。(如果你已经用了该ID,不要轻易去掉,容易造成应用更新失败。) - 针对附近Wi-Fi设备的新运行时权限:在以前的 Android 版本中,用户需要向您的应用授予
ACCESS_FINE_LOCATION
权限,应用才能完成与热点相关的多个常见 Wi-Fi 用例、Wi-Fi 直连、Wi-Fi RTT 等。由于用户很难将位置信息权限与 Wi-Fi 功能相关联,因此 Android 13(API 级别 33)在NEARBY_DEVICES
权限组中引入了新的运行时权限,适用于管理设备与附近 Wi-Fi 接入点连接情况的应用。此权限NEARBY_WIFI_DEVICES
可满足这些 Wi-Fi 用例。(未获取权限下,调用wifi-api 会出现 SecurityException异常) - 在后台使用身体传感器需要新的权限:如果应用以 Android 13 为目标平台,并且在后台运行时需要访问身体传感器信息,您就必须声明新的
BODY_SENSORS_BACKGROUND
权限。 - intent过滤器会屏蔽不匹配的intent:应用不会再接收从外部应用所导出组件的 intent,除非 intent 与声明的
<intent-filter>
元素相匹配。(主要是应用之间的传递会匹配。如果本应用内部的intent不会受影响。) - 细化的媒体权限:现在,应用必须使用单独的权限(而不是
READ_EXTERNAL_STORAGE
权限)来请求访问不同类型的媒体。(也就是想访问图片,视频,音频都需要针对不同的媒体文件单独申请权限。而不能一个权限全部获取。这是文件访问权限的细化)。 - 派生自PlaybackState的媒体控件:系统现在从
PlaybackState
操作(而不是MediaStyle
通知)派生媒体控件。(主要是用户体验的提升。)
新增:
- OpenJDK 11更新:Android 13 开始刷新 Android 的核心库,以与 OpenJDK 11 LTS 版本保持一致,并增添了适合应用和平台开发者的库更新和 Java 11 语言支持。(也就是开始完整支持JDK11了)
- 按应用设定的语言偏好设置:也就是说,用户系统语言为中文,也允许用户在应用内部选择其他语言偏好,将当前app的语言偏好设置为其他语言。(例如用户只想将某个app设置为英文,其他应用还是中文。那么这个就派上用场了。)
- 预测性返回手势:就是当用户在只想返回手势的时候,提供预览动画提前告诉用户返回后将会回到的界面。让用户决定是否继续操作或者放弃返回。(该功能默认不开启,如果程序自定义了返回导航,那这个功能就要改代码,如果原先就由系统处理返回导航。那么只需要直接启动功能就可以实现)。
- 带主题的应用图标:我们如果配置了自适应图标以及单色应用图标然后在mainfase文件中开启
<adaptive-icon>
。那么当用户启动了带主题的应用图标。系统将会使用用户的壁纸和主题来确定色调颜色,然后将颜色应用到我们的app图标中。 - Quick Settings Placement API: 使用
requestAddTileService()
可以将应用功能添加到通知栏中的快捷设置中,方便用户更快捷的使用某些功能。 - 文本转换API:使用中文输入时采用拼音输入法,这通常会导致搜索以及自动填充等功能的执行速度变慢。在 Android 13 中,应用可以调用新的文本转换 API,以便用户更快、更轻松地找到所需内容。
- Unicode库更新:针对多语种的开发者,需要了解的。国内开发,需要关注的不太多。
- 更快断字:断字让分行的文本更易于阅读,并且有助于使界面更具自适应性。在 Android 13 中,将断字性能优化了多达 200%,可以在
TextView
中启用断字功能,这几乎不影响渲染性能。如需启用更快断字功能,setHyphenationFrequency()
中使用新的fullFast
或normalFast
频率。 - 预期音频路由:
AudioManager
类中添加了新的音频路由 API。新的getAudioDevicesForAttributes()
API 允许您检索可以用于播放指定音频的设备列表,添加了可帮助您了解音频流是否可以直接播放的getDirectProfilesForAttributes()
。使用这些新 API 可确定最适合用于您的音轨的AudioFormat
- 可编程的着色器:Android 13 添加了对可编程
RuntimeShader
对象的支持,其行为是使用 Android 图形着色语言 (AGSL) 定义的。AGSL 与 GLSL 共用大部分语法,但可用于 Android 渲染引擎中以自定义 Android 画布中的绘制行为以及过滤 View 内容。可以用着色器来实现涟漪效果,模糊,以及拉伸滚动。 - 更安全地导出上下文注册的接收器:为了帮助提高运行时接收器的安全性,Android 13 允许您指定您应用中的特定广播接收器是否应被导出以及是否对设备上的其他应用可见。如果导出广播接收器,其他应用将可以向您的应用发送不受保护的广播。此导出配置在以 Android 13 或更高版本为目标平台的应用中可用,有助于防止一个主要的应用漏洞来源。
- 照片选择器:Android 13(API 级别 33)提供了全新的照片选择器体验(原先也有照片选择器,如果你用过就知道了)。应用启动照片选择器时,用户可选择与应用分享特定图片和视频(如个人资料照片),而不是授予应用查看整个媒体库的权限。(官方推荐,我们通过照片选择器来访问用户的照片和视频,使用这个功能不需要申请任何权限)。
- 可由开发者降级的权限:从 Android 13 开始,应用可以撤消先前由系统或用户授予的运行时权限。(以前版本要的权限太多了。现在可以通过相关API关闭运行时权限。提高用户的信任度。大家可以试试,特别在之后权限即将越来越细的时候。)。
- APK签名方案v3.1:APK 签名方案 v3.1 允许应用在单个 APK 中同时支持原始签名者和轮替签名者,并且该方案还支持 SDK 版本定位。(在低版本中 系统会自动忽略轮替签名而使用原始签名)
其他更新:
只是系统功能的升级,不用也没关系。不用太在意的地方。
- 改进了日语文本换行。
- 改进了非拉丁字母的行高(例如 藏语,缅甸语,泰米尔语等)。
- 彩色矢量字体:Android 13 可支持呈现 COLR 版本 1 (COLRv1) 字体,并将系统表情符号更新成了 COLRv1 格式。(如果你的app使用了系统字体来展示表情符合。那就要测试一下新版效果是否满足需求)
- Android 13 内置对 LE 音频的支持。
- 支持新的MIDI 2.0 标准。
- 改进了对于平板电脑和大屏设备的支持。
- 前台服务 (FGS) 任务管理器。无论应用采用何种目标 SDK 版本,Android 13 都允许用户从抽屉式通知栏中停止前台服务。
- 使用精确闹钟的新权限。 (不是闹钟,计时器,日历等方面的应用可不用在意。)
- 改进了密钥库和KeyMint中的错误报告功能:对于生成密钥的应用,密钥库和 KeyMint 现在提供更详细且更准确的错误指示器。
- 复制和粘贴方面的改进:向剪贴板中添加内容时,系统会显示标准视觉确认界面,以便用户预览和修改复制的内容。
- 新的系统级无障碍功能偏好设置:允许用户跨所有应用启用音频说明。音频说明是一种额外的旁白轨道,其中会有一位讲述者在演示过程中进行讲解,描述在音频的自然停顿期间屏幕上发生的情况。应用可以通过使用
isAudioDescriptionRequested()
查询音频说明轨道来遵循用户对音频说明轨道的偏好设置
附一份:API等级表
平台版本 | API 级别 | VERSION_CODE |
---|---|---|
Android 13 | 33 | T |
Android 12 | 32 | Sv2 |
Android 12 | 31 | S |
Android 11 | 30 | R |
Android 10 | 29 | Q |
Android 9.0 | 28 | Pie |
Android 8.1 | 27 | Oreo |
Android 8.0 | 26 | Oreo |
Android 7.1.1 | 25 | Nougat |
Android 7.0 | 24 | Nougat |
Android 6.0 | 23 | Marshmallow |
Android 5.1 | 22 | Lollipop |
Android 5.0 | 21 | Lollipop |
其中平台版本号小于当前,并大于前一个版本号。那么该版本为前一个版本号标注的版本。
参考来源官网地址: https://developer.android.google.cn/about/versions/13/summary?hl=zh-cn