最近Android 13发布了第一个开发者预览版本。本篇文章主要介绍一下这个预览版本中的行为变更和新功能。
Android 13 开发者预览版本简介
Android 13 开发者预览版本向开发者提供了一个早期测试和开发环境,包含新的行为变更、新功能及API,让开发者能及早为应用进行适配,并向开发者收集反馈与建议。
预计从2022年2月份开始,定期更新,更新计划表如下:
获取Android 13
可以通过两种方式来获取Android 13的SDK:
行为变更
在之前的Android 12的适配笔记中介绍过,行为变更分为针对所有应用,以及仅针对targetSdkVersion 为Android 13 以上的应用。
在本次的开发者预览版本中,仅有针对targetSdkVersion 为Android 13 以上的行为变更,如下:
隐私
Android 13 为Wi-Fi提供了新的运行时权限。
在Android 13之前,应用需要向用户申请定位权限ACCESS_FINE_LOCATION才能完成与热点、Wi-Fi直连,Wi-Fi RTT等功能,用户可能比较难将Wi-Fi与定位权限关联起来。
因此Android 13在NEARBY_DEVICES 权限组中引入了一个新的运行时权限NEARBY_WIFI_DEVICES,用于管理设备通过Wi-Fi与附近接入点的连接。在Android 13以后,如果应用在使用Wi-Fi API时不获取定位信息,则可以只申请该权限NEARBY_WIFI_DEVICES。
关于该权限更详细的信息可以查看官方文档。
安全
Inter filters 拦截不匹配的intents。
在Android 13以前,intent-filter仅在解析隐式intent时生效,使用显示intent时,intent-filter并不会过滤不匹配的intent。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"">
<application>
<activity
android:name=".BActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="app"
android:host="test"
android:path="/testjump" />
</intent-filter>
</activity>
</application>
</manifest>
class AActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//显示Intent
startActivity(Intent(this, BActivity::class.java))
}
}
在上面的示例代码中,该显示intent可以启动BActivity,但是很明显这个显示Intent与intent-filter的内容是不匹配的。这对于应用的安全是有风险的,在某些情况下,外部应用可以触发应用内部的功能。
在Android 13 以后,对于非本应用的,与intent-filter不符合的intent,会被拦截。
新功能
Android 13新增了一些功能,下面简单介绍一下。
用户体验
- 主题应用图标 Android 13 提供了新的API,让应用的图标可以跟随用户选择的主题变化。如何使用以及应用图标规范可以查阅官方文档
官方效果图如下:
- 快速设置API Android 13 提供了新的API,可以让应用在通知栏中添加快速设置的Tile,让用户不用离开应用就可以进行更改设置或其他操作,详情可以查阅官方文档。
- 更好的支持多语言 Android 13 提供了新的API,允许应用在运行时设置与系统语言不同的语言用于显示,详情可以查阅官方文档。
- 更快的连字符 连字符让需要换行的连续文本更具可读性,也使应用界面更具适应性。Android 13优化了连字符的性能,降低了对UI渲染性能的影响。详情可以查阅官方文档。
隐私和安全
- 照片选择器 在Android 13之前,照片选择通常是通过读取文件(需要申请权限),并自定义可视化UI的方式来实现的。
现在,Android 13 提供了具备标准化UI的照片选择器。当应用启动照片选择器时,用户可以选择应用仅能查看某些图片和视频,而不是所有图片和视频。由于照片选择器的隐私性很高,所以应用使用时不需要申请任何权限。
个人认为这对于开发者来说是一个很好的消息,不需要再对如何实现照片选择器头疼,不需要再对读取文件的权限更改了头疼(没错就是从Android 9 - >Android 10 -> Android 11)。详情可以查阅官方文档。
图形
- 可编程着色器
Android 13 添加了对
RuntiemShader的支持,可以借此实现涟漪效果、模糊和拉伸过度滚动等高级效果。详情可以查阅官方文档。
核心功能
- OpenJDK 11更新 Android 13 开始更新Android 核心库以与OpenJDK 11 LTS 版本保持一致。详情可以查阅官方文档。
个人观点
看了这个开发者预览版本后,对于Android 13还是蛮期待的,新增了一些不错的功能和API,希望正式版早日到来。