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 官网

参考

相关推荐
这儿有一堆花18 分钟前
安卓应用卡顿、性能低下的背后原因
android·安卓
byte轻骑兵20 分钟前
【Bluedroid】蓝牙HID DEVICE断开连接流程源码分析
android·c++·蓝牙·hid·bluedroid
Edward Nygma36 分钟前
springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码
android·开发语言·javascript
投笔丶从戎4 小时前
Kotlin Multiplatform--03:项目实战
android·开发语言·kotlin
居然是阿宋4 小时前
Android Canvas API 详细说明与示例
android
wuli玉shell7 小时前
spark-Schema 定义字段强类型和弱类型
android·java·spark
东风西巷7 小时前
BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频
android·智能手机·音视频·生活·软件需求
JhonKI7 小时前
【MySQL】行结构详解:InnoDb支持格式、如何存储、头信息区域、Null列表、变长字段以及与其他格式的对比
android·数据库·mysql
ab_dg_dp9 小时前
Android 位掩码操作(&和~和|的二进制运算)
android
潜龙952720 小时前
第3.2.3节 Android动态调用链路的获取
android·调用链路