2025年,Android 16 都快来了,你知道各个版本 Android的特点吗?

随着 Android 的发展,每个新版本的 Android 都带来了新的 API 和 改进。这篇文章将介绍从 Android 5 开始到最新版 Android 的API及其行为的变更。

Android 5 Lollipop

Android 5有两个版本,分别是 5.0 和 5.1,分别对应 API 21 和 API 22。Android 5 的API及其行为的变更有:

  • Android Runtime (ART)

在 Android 5.0 中,ART 运行时取代了 Dalvik 成为平台默认运行时。ART 的新功能有:

  1. 预先 (AOT) 编译
  2. 改进的垃圾回收 (GC)
  3. 改进的调试支持
  • 通知改进

在 Android 5中,通知可以在锁屏时出现,同时来电等重要通知提醒会显示在浮动通知 中,这是一个小浮动窗口,让用户无需离开当前应用即可响应或关闭通知。对于媒体播放和通知跳转等功能增加了 Notification.MediaStyle 模块。

  • "概览"屏幕支持显示多个来做同一个应用的activity

"最近使用的应用"屏幕,也称为"概览"屏幕,表示近期任务 或"最近用过的应用"屏幕,这是系统级界面,其中会列出 activity 和 tasks。 用户可以浏览列表、选择某个任务 恢复任务,或者通过滑开任务将其从列表中移除。

在 Android 5 中,我们可以通过 documentLaunchMode 属性来让最近屏幕显示多个来做同一个应用的activity。如上图所示,Google 云端硬盘应用的两个 Activity 显示在最近屏幕上,并且每个 Activity 展示不同的内容。

  • Android NDK 支持 64 位支持

Android 5.0 引入了对 64 位系统的支持。64 位增强功能可增加地址空间并提升性能,同时仍完全支持现有的 32 位应用。

  • OpenGL ES 3.1 的支持

Android 5.0 添加了 Java 接口和对 OpenGL ES 3.1 的原生支持。

  • 引入了新的 Camera2 API

Android 5.0 引入了新的 android.hardware.camera2 API 来简化精细照片采集和图像处理。

详情可以看 Android Lollipop 官方文档

Android 6 Marshmallow (API 23)

Android 6 的API及其行为的变更有:

  • 运行时权限

Android 6 引入了运行时权限,用户可以在运行时授予或拒绝权限。checkSelfPermission() 方法用来确定应用是否已获得权限; requestPermissions() 方法用于请求权限。即使应用并不以 Android 6.0(API 级别 23)为目标平台,我们也应该在新权限模式下测试应用。

  • 休眠(Doze)模式和应用待机模式

在 Android 6.0 开始引入了两项省电功能,分别是休眠和应用待机。其中休眠是针对系统的,触发条件是设备静止、屏幕关闭、未连接电源;而应用待机则是针对应用的,触发条件是当用户有一段时间未触摸应用。

在休眠(Doze)模式下,系统会尝试通过限制应用对网络和 CPU 密集型服务的访问来节省电量。它还会阻止应用访问网络,并延迟其作业、同步和标准闹钟。

  • 支持文本选择

如上图所示,当用户在应用中选择文本时,可以在浮动工具栏中显示文本选择操作。

  • 指纹身份验证

Android 6 中引入了指纹认证API,该 api 的相关示例可以见 BiometricAuthentication

更多关于 Android 6 的特点可以看 Android 6.0 Marshmallow 官方文档

Android 7 Nougat

Android 7有两个版本,分别是 7.0 和 7.1,分别对应 API 24 和 API 25。Android 7 的API及其行为的变更有:

  • 多窗口支持

如上图所示,在 Android 7中,引入了多窗口的支持,允许用户屏幕上同时弹出两个应用。

  • 增强了通知的功能

在 Android 7中重新设计了通知,让其变得更简单。更新功能有:

  1. 直接回复,可以添加直接在通知中回复消息或输入其他文字的操作。
  2. 系统可以将消息分组 (例如按消息主题),以及显示相应群组
  3. 重新设置了通知模板样式
  • 加强了休眠模式

在 Android 6中,需要设备处于静止状态才会进入休眠模式。而在 Android 7中,只要屏幕关闭一段时间且设备未接通电源,就会进入休眠模式,并对应用施加 CPU 和网络限制。 这意味着,即使用户随身携带设备,也可以节省电量 。

  • 移除 CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 三个隐式广播

后台进程可能会耗费大量内存和电池电量。例如,某一隐式广播可能会启动许多已注册监听它的后台进程,即使这些进程可能并没有执行很多任务。这会对设备性能和用户体验产生重大影响。

因此在 Android 7 中移除了 CONNECTIVITY_ACTION(用于通知网络连接状态的变化)、ACTION_NEW_PICTURE(用于通知新图片的添加) 和 ACTION_NEW_VIDEO(用于通知新视频的添加) 这三个隐式广播。其中 CONNECTIVITY_ACTION 可以通过动态注册广播接收到,其他两个则静态和动态注册的都无法收到。

  • SurfaceView

在 Android 7中,对 SurfaceView 做了优化,让其电量的消耗更少。因此从 Android 7开始,建议使用 SurfaceView 而不是 TextureView。

  • Vulkan

Vulkan 是新一代的 3D 渲染库,提供了更高性能的3D图形渲染。在 Android 7 中我们可以使用它来代替 OpenGL ES。

  • Art 支持 AOT 和 JIT 结合使用

JIT 是一种动态编译技术,在应用运行时将字节码编译为机器码。AOT 是一种预先编译技术,在应用安装时将字节码(DEX 文件)直接编译为机器码

在 Android 5 以前,Dalvik 虚拟机使用 JIT。而在 Android 5 中,替换成了 ART 虚拟机,ART 虚拟机则依赖 AOT 编译。

在 Android 7 及其以后,支持 AOT 与 JIT 结合使用。即安装时部分代码进行 AOT 编译,加快启动速度。运行时 JIT 编译热点代码。设备空闲时,ART会根据 JIT 的热点代码进行 AOT 编译。

AOT 与 JIT 结合使用的最大好处是,加快了应用程序安装和系统更新的速度。比如之前大型应用在 Android 6中需要几分钟安装,而现在只需要几秒即可。

  • 支持应用快捷方式
  • 支持签名方案 v2

Android 7.0 引入了 APK Signature Scheme v2,这是一种新的应用签名方案, 可缩短应用安装时间,增强防范未经授权的行为 对 APK 文件的更改。

更多关于 Android 7 的特点可以看 Android 7.0 Nougat 官方文档

Android 8 Oreo

Android 8 有两个版本,分别是 8.0 和 8.1,分别对应 API 26 和 API 27。Android 8 的API及其行为的变更有:

  • 画中画模式

如图所示,Android 8.0 支持 activity 在画中画(PIP)模式中运行,主要应用于视频播放。

  • 通知

Android 8.0 中对通知进行了重新设计,通知修改有:

  1. 通知渠道:是一种将通知分类管理的机制。开发者可以为不同类型的通知创建不同的渠道,用户可以根据渠道单独管理通知的行为(如声音、振动、重要性等)。
  2. 通知圆点:提醒用户有未读通知,提升通知的可见性。
  3. 通知延后:通知延后允许用户将某个通知暂时隐藏,并在指定的时间后重新显示。
  4. 通知超时:允许开发者设置通知的显示时间,超过时间后通知会自动消失。

在 Android 8.1 中,应用每秒只能发出一次通知提醒。如果一秒内有两次通知,那么只有第一次的通知会有提示音提醒一次,后面的会正常通知但是没有提示音提醒。

  • 可下载字体

Android 8.0 允许开发者从供应商获取可下载字体资源,而无需将字体绑定到 APK 中。供应商和 Android 支持库负责下载字体,并将这些字体分享到各个 App 中。同样的操作也可用于获取表情资源,让应用不再止步于设备内置表情包。

由于国内手机厂商比较多,没有一个统一的Android手机生态(众所周知的原因,Google Play服务国内无法使用),所以必须自己搭建一套字体提供程序,因此比较麻烦。

如果想要使用可下载字体功能,具体可见 官方文档

  • 自适应图标

自适应图标是 Android 8.0 引入的一项重要特性,其主要作用是:统一应用图标的外观,确保在不同设备上显示一致;支持动态效果,提升用户体验;提升主屏幕的视觉一致性。效果如下所示:

  • 固定快捷方式

在 Android 8中可以把快捷方式固定在桌面上上,如下图所示:

  • Neural Networks API

Android 8.1 推出了神经网络 API,具体可以看Neural Networks API

  • SharedMemory API

SharedMemory 是 Android 8.1 中新引入的 api,用于在进程之间共享内存。相对 MemoryFileSharedMemory 能更灵活地访问和控制共享内存区域。

更多关于 SharedMemory ,可以看 Ashmem(Android共享内存)使用方法和原理

  • Bitmap内存的存放位置变更

在Android 8.0以前,图片的宽高数据和像素数据都保存在Java层。从Android 8.0开始,Java层只保存图片的宽高数据,图片的像素数据保存在Native层,不再占用Java Heap内存。

  • 后台执行限制

Android 8.0 会限制后台应用可以执行的操作。应用在两个方面受到限制:

  1. 后台服务限制:当应用处于空闲状态时,其对后台服务的使用受到限制。这不适用于对用户更明显的前台服务。
  2. 广播限制:除了少数例外情况外,应用无法使用其清单注册隐式广播。它们仍然可以在运行时注册这些广播,并且可以使用清单注册显式广播和专门针对其应用的广播。

具体的限制内容可以看 后台执行限制

  • 后台位置限制

为降低耗电量,Android 8.0 会对应用在后台运行时检索用户当前位置信息的频率进行限制。在这些情况下,应用每小时只能接收几次位置信息更新。具体的限制内容可以看 后台位置限制

更多关于 Android 8 的特点可以看 Android 8 官方文档

Android 9.0 Pie (API 28)

Android 9 的API及其行为的变更有:

  • 室内定位

在 Android 9 中添加了 Wifi RTT 的支持,应用可以使用 RTT API 来实现室内定位的功能。

  • 刘海屏支持

在 Android 9中提供了无边框屏幕、刘海屏的支持。我们可以提供 getDisplayCutout 来确定是否有刘海屏的存在。使用 DisplayCutout 类则可以让我们找出非功能区域的位置和形状。

  • 通知增强
  1. 增强即时通讯体验
  2. 可以屏蔽渠道组
  3. 新增广播类型

在 Android 9 之前,已暂停的应用发出的通知会被取消。 从 Android 9 开始,已暂停的应用发出的通知将一直隐藏,直到 应用恢复运行。

具体见 Android 9 通知增强

  • 多摄像头支持

在 Android 9 中,支持同时访问多个摄像头。

  • 针对非 SDK 接口的限制

从 Android 9(API 级别 28)开始,Android 平台对应用能使用的非 SDK 接口实施了限制。只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,这些限制就适用。

更多信息可以看 针对非 SDK 接口的限制

  • 签名方案v3

Android 9 增加了对 APK 签名方案 v3 的支持。v3支持密钥轮换,并增强了安全性。V3 签名方案与 V1 和 V2 完全兼容,即使设备不支持 V3,仍然可以使用 V1 或 V2 进行验证

  • 旋转锁定

Android 9 增加了新的旋转锁定的旋转模式。如下图所示:

更多旋转相关信息可以看屏幕旋转更改

  • ImageDecoder

Android 9 引入了 ImageDecoder 类,它提供了一种现代化的图像解码方法。

  • 文本API提供了更多支持
  1. 改进了 PrecomputedText 类
  2. 提供了Magnifier,用于实现放大镜功能
  3. Android 9 增强了 TextClassifier 类, 该模型利用机器学习来识别所选文本中的某些实体, 提供操作建议。例如,TextClassifier 可让应用检测用户已选择电话号码。这样应用就可以让用户使用该号码拨打电话。
  • 前台服务

在 Android 9中,前台服务需要申请 FOREGROUND_SERVICE 权限

  • 隐私权变更

为了加强用户隐私保护,Android 9 引入了多项行为变更,例如限制后台应用对设备传感器的访问权限、限制从 Wi-Fi 扫描检索的信息,以及与通话、手机状态和 Wi-Fi 扫描相关的新权限规则和权限组。

更多关于隐私变更的信息,可以看 隐私变更

  • 电源管理

在 Android 9中,引入了应用待机分组机制,将应用根据用户的使用模式分为不同的优先级组(Buckets),每个组有不同的资源限制和唤醒策略。

同时 Android 9 对省电模式进行了改进,比如系统会更积极地将应用置于应用待机模式,而不是等待应用进入空闲状态。

应用待机分组包括:

  • 活跃(Active) :用户正在使用的应用。
  • 工作集(Working Set) :用户经常使用但当前未在前台的应用。
  • 常用(Frequent) :用户定期使用但不频繁的应用。
  • 罕见(Rare) :用户很少使用的应用。
  • 限制(Restricted) :长时间未使用且可能被限制后台活动的应用。

更多关于 Android 9 的特点可以看 Android 9 官方文档

Android 10 (API 29)

Android 10 的API及其行为的变更有:

  • 可折叠设备的支持

在 Android 10 中,提供了对可折叠设备的支持。我们可以使用 Jetpack WindowManager 库为可折叠设备的窗口功能(如折叠边或合页)提供了一个 API surface,让应用具备折叠感知能力。

关于折叠屏的适配具体可见 了解可折叠设备

  • 5G

Android 10 新增了针对 5G 的平台支持。可以使用 ConnectivityManager 来检测设备是否具有高带宽连接,还可以检查连接是否按流量计费。

  • 深色主题

Android 10 新增了一个系统级的深色主题,非常适合光线较暗的场景并能帮助节省电量。

  • 手势导航

Android 10 引入了全手势导航模式,该模式不显示通知栏区域,允许应用使用全屏来提供更丰富、更让人沉浸的体验。它通过边缘滑动(而不是可见的按钮)保留了用户熟悉的"返回""主屏幕"和"最近用过"导航。

  • Thermal API

当设备过热时,会可能影响到 CPU 和 GPU 的运行。在 Android 10 中,应用和游戏可以使用 Thermal API监控设备变化情况,并在设备过热时采取措施,使设备恢复到正常温度。

  • 共享内存

以 Android 10 为目标平台的应用无法直接使用 ashmem (/dev/ashmem),而必须通过 NDK 的 ASharedMemory 类访问共享内存。

此外,应用无法直接对现有 ashmem 文件描述符进行 IOCTL,而必须改为使用 NDK 的 ASharedMemory 类或 Android Java API 创建共享内存区域。这项变更可以提高使用共享内存时的安全性和稳健性,从而提高 Android 的整体性能和安全性。

  • 隐私权变更

在 Android 10 中对隐私权又做了一次变更,具体变更可以看 Android 10 中的隐私权

  • 前台服务类型

Android 10 引入了 foregroundServiceType XML 清单属性,为前台服务定义对应的服务类型。比如 dataSync 是指从网络下载文件;mediaPlayback 是指播放音乐、有声读完等。所有前台服务类型可以看 前台服务类型

更多关于 Android 10 的特点可以看 Android 10 官方文档

Android 11 (API 30)

  • 隐私设置

Android 11 引入了一些变更和限制来加强用户隐私保护,其中包括:

  1. 强制执行分区存储:对外部存储目录的访问仅限于应用专用目录,以及应用已创建的特定类型的媒体。
  2. 自动重置权限:如果用户几个月未与应用互动,系统会自动重置应用的敏感权限。
  3. 在后台访问位置信息的权限:用户必须转到系统设置,才能向应用授予在后台访问位置信息的权限。
  4. 软件包可见性:当应用查询设备上已安装应用的列表时,系统会过滤返回的列表。

如需了解详情,可以看隐私设置

  • 增加 APk 签名方案 v4

Android 11 添加了对 APK 签名方案 v4 的支持。注意 targetSdkVersion 为 Android 11 的应用不支持 v1 签名的应用,需要签名版本在 v2 及以上。

  • 无线调试支持

Android 11 支持通过 Android 调试桥 (adb) 以无线方式部署和调试应用。

  • apk 增量安装

我们使用 adb install --incremental 可以支持 apk 增量更新。需要注意 apk 增量需要 v4 签名方案支持。

  • NDK Thermal API

native 版本的监控设备是否过热的 API,具体可以看 NDK Thermal

  • IME 新API

Android 11 引入了新的 API 以改进输入法 (IME) 的转换,例如屏幕键盘。这些 API 可让我们更轻松地调整应用内容,并与 IME 的出现和消失以及状态和导航栏等其他元素保持同步。

  • Frame rate API

Android 11 提供了一个 API,可让应用告知系统其预期帧速率,从而减少支持多个刷新率的设备上的抖动。有关如何使用此 API 的信息,请参阅帧速率指南

  • 应用退出原因

Android 11 引入了 ActivityManager.getHistoricalProcessExitReasons() 方法,用于报告近期任何进程终止的原因。该方法可以用来收集崩溃诊断信息,例如进程终止是由于 ANR、内存问题还是其他原因所致。此外,我们还可以使用新的 setProcessStateSummary() 方法存储自定义状态信息,以便日后进行分析。

  • ResourcesLoader 和 ResourcesProvider

在 Android 11(API 级别 30)中,ResourcesLoader 和 ResourcesProvider 是用于动态加载和管理资源的新 API。它们为开发者提供了更灵活的方式来加载和访问资源。

  • 动态 intent 过滤器

Android 11 引入了 MIME 组,这是一个新的清单元素,可让应用在 intent 过滤器中声明一组动态的 MIME 类型,并在运行时以编程方式对其进行修改。

更多关于 Android 11 的特点可以看 Android 11 官方文档

Android 12 (API 31)

  • 生命周期变更

在 Android 12 中,root activity 中按下了 back 按钮,不会 finish 当前的 activity。而是会将该 activity 放到后台。

具体信息见 有关 Android12 中 Activity 生命周期的变化

  • 自动更新应用

在 Android 12,增加了 PackageInstaller#setRequireUserAction() 方法,该方法可让安装程序应用执行应用更新而无需用户确认操作。

  • 前台服务启动限制

当在后台运行时,不再允许应用启动前台服务。

  • 应用启动画面 API

Android 12 引入了全新的应用启动画面 API ,可为所有应用启用可自定义的应用启动动画。

  • 应用存储访问权限

现在,应用可以创建自定义 activity,让用户可以管理设备上的应用数据,并将此 activity 提供给文件管理器。具体可以看应用存储访问权限

  • 游戏模式

Android 12 引入了一个新的游戏模式 ,可让用户优化游戏体验以提升性能或延长电池续航时间。

更多关于 Android 12 的特点可以看 Android 12 官方文档

Android 13 (API 33)

  • ART 优化

在 Android 13(API 级别 33)及更高版本中,ART 可大大加快在原生代码之间切换的速度,JNI 调用速度现在最高可提高 2.5 倍。我们还重新设计了运行时引用处理,使其大部分都为非阻塞处理,从而进一步减少了卡顿。此外,我们还可以使用 Reference.refersTo() 公共 API 更快地回收无法访问的对象。

  • 开发者可降级权限

从 Android 13 开始,应用可以撤消未使用的运行时权限

从 Android 13 开始,系统支持可编程 RuntimeShader 对象,其行为通过 Android 图形着色语言 (AGSL) 定义。AGSL 与 GLSL 共用大部分语法,但可用于 Android 渲染引擎中以自定义 Android 画布中的绘制行为以及过滤 View 内容。

Android 在内部使用这些着色器来实现涟漪效果模糊拉伸滚动。通过 Android 13 及更高版本,我们可以为应用创建类似的高级效果。

更多关于 Android 13 的特点可以看 Android 13 官方文档

Android 14 (API 34)

  • 限制最低可安装目标的 API 级别

在 Android 14,用户无法安装 targetSdkVersion 低于 23 的应用。

  • 对隐式 intent 的限制

对于以 Android 14(API 级别 34)或更高版本为目标平台的应用,Android 会限制应用向内部应用组件发送隐式 intent。详情看对隐式 intent 和待处理 intent 的限制

  • 应用只能终止自己的后台进程

从 Android 14 开始,当您的应用调用 killBackgroundProcesses() 时,该 API 只能终止自己应用的后台进程。如果我们传入其他应用的包名,此方法将不会对该应用的后台进程产生任何影响

  • 必须提供前台服务类型

如果应用以 Android 14(API 级别 34)或更高版本为目标平台,则必须为应用中的每个前台服务指定至少一个前台服务类型

  • 屏幕截图检测

如果用户在应用 activity 可见时截取屏幕截图,屏幕截图检测API 会调用回调并显示消息框消息。

更多关于 Android 14 的特点可以看 Android 14 官方文档

Android 15

  • 支持 16 KB 页面大小

从 Android 15 开始,Android 系统支持配置为使用 16 KB 页面大小的开发设备。详细信息可以看支持 16 KB 页面大小

  • 私密空间

私密空间是 Android 15 中推出的一项新功能,可让用户在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。

  • 最低可安装目标API级别

在 Android 15中,用户无法安装 targetSdkVersion 低于 24 的应用。

  • ApplicationStartInfo API

Android 15 上的 ApplicationStartInfo API API 有助于深入了解应用启动,包括启动状态、在启动阶段所花的时间、在实例化 Application 类时应用的启动方式等。

  • 详细的应用大小信息

Android 15 添加了 StorageStats.getAppBytesByDataType([type]) API,可让我们深入了解应用如何使用所有这些空间,包括 APK 文件分块、AOT 和加速相关代码、dex 元数据、库和引导式配置文件。详情可以看详细的应用大小信息

  • 应用管理的性能分析

Android 15 包含 ProfilingManager 类,可让我们从应用中收集性能分析信息。详情可以看应用管理的性能分析

  • 屏幕录制检测

Android 15 添加了屏幕录制检测 的支持,以检测是否正在录制应用。

更多关于 Android 15 的特点可以看 Android 15 官方文档

Android 16

Android 16 目前还是 Beta 状态,具体可以看 Android 16 官网

参考

相关推荐
ljx140005255024 分钟前
推荐一个基于Koin, Ktor & Paging等组件的KMM Compose Multiplatform项目
android·kotlin
lrydnh1 小时前
数据库语句
android·数据库
去看全世界的云2 小时前
【Kotlin】Kotlin基础笔记
android·java·笔记·kotlin
tangweiguo030519872 小时前
Android打造易用的 WiFi 工具类:WifiUtils 封装实践
android·java·wifi
Legendary_0082 小时前
LDR6500:革新手机OTG充电体验的关键芯片
android·智能手机
今阳3 小时前
鸿蒙开发笔记-11-LazyForEach 数据懒加载
android·华为·harmonyos
pengyu3 小时前
系统化掌握Flutter组件之Transform:空间魔法师
android·flutter·dart
岸芷漫步3 小时前
retrofit框架分析
android
&有梦想的咸鱼&3 小时前
Android OKHttp缓存模块原理分析
android·okhttp·缓存
顾林海3 小时前
解锁Android Activity:从原理到实战的深度剖析
android