面向开发者的历代安卓特性整理
Android 版本历史
Name | Version | Issue date | API Level |
---|
Android 1.0 | 1.0 | 2008年09月23日 | 1 | Android 1.1 | 1.1 | 2009年02月09日 | 2 | Android Cupcake | 1.5 | 2009年04月27日 | 3 | Android Donut | 1.6 | 2009年09月15日 | 4 | Android Eclair | 2.0~2.1 | 2009年10月26日 | 5~7 | Android Froyo | 2.2~2.2.3 | 2010年05月20日 | 8 | Android Gingerbread | 2.3~2.3.7 | 2010年12月06日 | 9~10 | Android Honeycomb | 3.0~3.2.6 | 2011年02月22日 | 11~13 | Android Ice Cream Sandwich | 4.0~4.0.4 | 2011年10月18日 | 14~15 | Android Jelly Bean | 4.1~4.3.1 | 2012年07月09日 | 16~18 | Android KitKat | 4.4~4.4.4 | 2013年10月31日 | 19~20 | Android Lollipop | 5.0~5.1.1 | 2014年11月12日 | 21~22 | Android Marshmallow | 6.0~6.0.1 | 2015年10月05日 | 23 | Android Nougat | 7.0~7.1.2 | 2016年08月22日 | 24~25 | Android Oreo | 8.0~8.1 | 2017年08月21日 | 26~27 | Android Pie | 9 | 2018年08月06日 | 28 | Android 10 | 10 | 2019年09月03日 | 29 | Android 11 | 11 | 2020年09月08日 | 30 | Android 12 | 12 | 2021年10月?日 | 31 |
安卓彩蛋
版本 占比(截至2019年5月7日)
0%
0%
1%
2%
1%
7%
3%
12%
17%
11%
8%
13%
15%
10%
版本分布
2.3.3~2.3.7 Gingerbread
4.0.3~4.0.4 Jelly Bean
4.1.x Jelly Bean
4.2.x Jelly Bean
4.3 Jelly Bean
4.4 Jelly Bean
5.0 Lollipop
5.1 Lollipop
6.0 Marshmallow
7.0 Nougat
7.1 Nougat
8.0 Oreo
8.1 Oreo
9 Pie
Version | Name | API | Runtime | Proportion |
---|
2.3.3~2.3.7 | Gingerbread | 10 | Dalvik 1.4.0 | 0.3% | 4.0.3~4.0.4 | Jelly Bean | 15 | Dalvik | 0.3% | 4.1.x | Jelly Bean | 16 | Dalvik | 1.2% | 4.2.x | Jelly Bean | 17 | Dalvik | 1.5% | 4.3 | Jelly Bean | 18 | Dalvik | 0.5% | 4.4 | Jelly Bean | 19 | Dalvik & ART 1.6.0 | 6.9% | 5.0 | Lollipop | 21 | ART 2.1.0 | 3.0% | 5.1 | Lollipop | 22 | ART | 11.5% | 6.0 | Marshmallow | 23 | ART | 16.9% | 7.0 | Nougat | 24 | ART | 11.4% | 7.1 | Nougat | 25 | ART | 7.8% | 8.0 | Oreo | 26 | ART | 12.9% | 8.1 | Oreo | 27 | ART | 15.4% | 9 | Pie | 28 | ART | 10.4% |
屏幕尺寸和密度 占比(截至 2020 年 8 月 30 日)
| ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | Total |
---|
Small | 0.1% | | | | 0.1% | | 0.2% | Normal | | 0.4% | 0.3% | 17.0% | 41.1% | 25.9% | 84.7% | Large | | 1.8% | 2.0% | 0.7% | 2.6% | 2.1% | 9.2% | Xlarge | | 3.5% | | 1.9% | 0.5% | | 5.9% | Total | 0.1% | 5.7% | 2.3% | 19.6% | 44.3% | 28.0% | |
Vulkan 版本(截至 2020 年 8 月 30 日)
Vulkan 版本 | 分发率 |
---|
无 | 47.0% | Vulkan 1.0.3 | 25.0% | Vulkan 1.1 | 28.0% |
OpenGL ES 版本(截至 2020 年 8 月 30 日)
OpenGL ES 版本 | 分发率 |
---|
GL 2.0 | 12.28% | GL 3.0 | 16.57% | GL 3.1 | 8.77% | GL 3.2 | 62.38% |
Android架构
Android 软件栈
Android系统架构图
历代版本特性
参考
4.0~4.4 Jelly Bean API14~19
- NFC 功能
- IR 红外发射器
- 遥控器
- 打印框架
- 存储访问框架 浏览文件
- 低功耗传感器 [步测器和计步器、]
- 共享短信提供程序
- 全屏沉浸模式
- 动画场景的转场 TransitionManager
- 透明系统 UI 样式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWBUwwVu-1631938193295)(https://developer.android.com/images/kk-home.jpg)] - 增强的WebView 【HTML5、CSS3、JavaScript引擎 (V8)】
- 屏幕录制 SurfaceView.setSecure()可屏蔽录制
- 自适应分辨率切换 【在播放过程中无缝更改分辨率】DASH通用加密
- HTTP直播流式传输 (HLS)隐藏式字幕
- DSP音频隧道 音频监控 音量增强器 用于改善 AV 同步的音频时间戳
- Wi-Fi CERTIFIED Miracast?
- RenderScript Compute GPU 加速 NDK直接使用RenderScript
- OpenGL ES 2.0 【支持主显示器、外部显示器(例如HDMI)、以及HWComposer 1.3支持一个虚拟显示器】
- 无障碍功能
- 权限 【INSTALL_SHORTCUT(安装快捷键)、UNINSTALL_SHORTCUT(卸载快捷键)、TRANSMIT_IR(红外线发射器)】
5.0~5.1 Lollipop API21~22 (最富雄心的 Android 版本!)
- ART取代 Dalvik
- Material Design
- 64位NDK Android 5.0 引入了对 64 位系统的支持
- 通知 【浮动通知、锁屏通知、抬头通知、添加新的元数据、不再需要 RemoteViews】
- Android TV 输入框架 (TIF)
- 概览空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sYwdjgNn-1631938193296)(https://developer.android.com/images/versions/recents_screen_2x.png)] - 高级连接 BLE并发 多网络功能 NFC应用ID
- OpenGL ES 3.1安卓扩展包(AEP)
- 音频增强 低延迟音频输入 音频流混音(多大八个声道,包括 5.1 和 7.1 声道进行混音) 浏览来自其他应用的媒体 文本语音转换合成 USB 音频外设 Opus 音频编解码
- 增强的相机和视频 允许采集YUV 和 Bayer RAW 等原始格式 4K支持
- 屏幕采集共享
- 新的传感器 倾斜检测器 心率传感器 互动复合传感器(唤醒,拿起,扫视等特殊手势识别)
- Chromium WebView 【新增WebRTC、WebAudio、WebGL】
- 用于开发省电应用的工具
新增的 Job Scheduling API 允许您通过将作业推迟到稍后或指定条件下(如设备充电或连入 WLAN 时)运行来优化电池寿命。 新增的 dumpsys batterystats 命令可生成电池使用情况统计信息,您可通过它了解整个系统的耗电情况,以及了解您的应用对设备电池的影响。您可以查看耗电事件历史记录、每个 UID 和系统组件的近似耗电情况以及其他信息。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eahZDBJ5-1631938193297)(https://developer.android.com/images/versions/battery_historian.png)]
6.0 Marshmallow API23
- 运行时权限
- 低电耗模式和应用待机模式
- 取消支持 Apache HTTP 开启方式
android{ useLibrary ‘org.apache.http.legacy’ } - OpenSSL 库转向使用 BoringSSL 请勿链接到并非 NDK API 组成部分的加密库,如
libcrypto.so 和 libssl.so 。 - 硬件标识符访问权 WifiInfo.getMacAddress()
方法和 BluetoothAdapter.getAddress() 必须拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限 - 通知 改用Notification.Builder
- 音频管理器变更 不再支持通过 AudioManager 类直接设置音量或将特定音频流静音。
- 文本选择 浮动工具栏 startActionMode(Callback, ActionMode.TYPE_FLOATING)
- 浏览器书签变更 此版本移除了对全局书签的支持。
- Android 密钥库变更 从此版本开始,Android 密钥库提供程序不再支持 DSA。但仍支持 ECDSA。
- WLAN 和网络连接变更
您的应用只能更改由您创建的 WifiConfiguration 对象的状态。 使用多网络 API(如 openConnection() 、bindSocket() 和新增的 bindProcessToNetwork() 方法)来确保通过所选网络传送网络流量。 - 相机服务变更 在此版本中,相机服务中共享资源的访问模式已从之前的“先到先得”访问模式更改为高优先级进程优先的访问模式。
- APK验证 该平台现在执行的 APK 验证更为严格。如果在清单中声明的文件在 APK 中并不存在,该 APK 将被视为已损坏。移除任何内容后必须重新签署 APK。
- USB连接 默认情况下,现在通过 USB 端口进行的设备连接设置为仅充电模式。 注意提醒用户
7.0~7.1 Nougat API24~25
- 电量优化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9KdrJLr3-1631938193298)(https://developer.android.com/images/android-7.0/doze-diagram-1.png)] - 后台优化
- 权限更改 应用私有目录被限制访问
- 虚拟文件 禁止file://URI授权content://URI推荐FileProvider
- 无障碍改进
- 屏幕缩放 最小sw320dp
- 阻止应用动态链接非公开NDK库 对API23以下的,暂时开放libandroid_runtime.so、libcutils.so、libcrypto.so 和 libssl.so
- 分屏显示
- OpenGL ES 3.2 API
- Vulkan API
- 使用硬件支持的密钥库
- 夜间模式
- 流量保护模式
8.0 Oreo API26
- 通知栏分类
- 圆点角标
- 通知背景
- 后台限制
后台服务限制:处于空闲状态时,应用可以使用的后台服务存在限制。 广播限制:除了有限的例外情况,应用无法为隐式广播注册接收器。 - 画中画
- 自适应图标
- 蓝牙升级
- 智能文本选择与智能共享(是否可以扩展自己的选项进去)
- WLAN感知
- 取消屏幕纵横比限制
- 字体 可下载字体、xml 定义字体
- 自适应 TextView、统一布局边距
- 广色域
- 多显示器支持[多屏互动]
- 可声明应用类别
8.1 Oreo(Go 版本) API27
- 内存优化 改进了整个平台的内存使用情况,可确保应用可以在内存不超过 1GB 的设备上高效运行。
- 灵活的定位选项 新的硬件功能常量,可让您通过 Google Play 向正常内存或低内存设备分发应用。
- Neural Networks API 为设备上的机器学习框架提供加速计算和推断功能,这些机器学习框架包括 TensorFlow Lite以及 Caffe2,等等。
- 自动填充框架更新
- 通知 现在,应用每秒只能发出一次通知提示音。低内存 Android 设备不支持 NotificationListenerService 和 ConditionProviderService,这些设备在调用 ActivityManager.isLowRamDevice() 时会返回 true。
- EditText 更新 从 API 级别 27 开始,
EditText.getText() 方法会返回 Editable ;以前,它会返回 CharSequence 。 - 程序化安全浏览操作 您的应用可以在
WebView 实例尝试转到 Google 已归类为已知威胁的网址时检测到该行为。
9.0 Pie API28
- Wi-Fi RTT 配合支持RTT的AP进行室内定位,精准度1至2米。使用场景:“打开这盏灯”、“此产品是否有特别优惠?”
- 显示屏缺口支持 DisplayCutout
- ImageDecoder 取代 BitmapFactory
- AnimatedImageDrawable 用于绘制和显示 GIF 和 WebP 动画图像。
- 短信的用户画像
- 全面屏的全面支持
- 通知栏的多种通知
- 多摄像头的更多画面
- GPS定位之外的WiFi定位
- 网络还有神经网络
- **Material Design迎来2.0时代 **
- 数字化健康
- 自适应功能
- 统一生物识别身份验证对话框
- APK Signature Scheme v3
- 窗口变更详情
- 旋转 按钮手动触发旋转
- 文本 文本预先计算、Smart Linkify
- DEX 文件的 ART 提前转换
10. Android 10 API29
- 限制非SDK接口
- 手势导航
- NDK 共享对象不得包含文本重定位、Bionic 库和动态链接器路径变更、系统二进制文件/库会映射到只执行内存(不可读取)
- 安全 系统默认会为所有 TLS 连接启用 TLS 1.3;SHA-1 哈希算法的证书在 TLS 连接中不受信任;KeyChain 行为变更和改进:从 Android 10 开始,
KeyChain 对象会在调用 KeyChain.choosePrivateKeyAlias() 时信任颁发机构和密钥规范参数,以向用户显示证书选择提示。需要注意的是,此提示不包含不符合服务器规范的选项。 - WLAN 直连广播
- WLAN 感知功能
- SYSTEM_ALERT_WINDOW Android 10(Go 版本)设备上运行的应用无法获得
SYSTEM_ALERT_WINDOW 权限。 - 以旧版 Android 系统为目标平台的应用的警告
- 移除了 SHA-2 CBC 加密套件 这些加密套件不如使用 GCM 的类似加密套件安全
- HTTPS 连接变更 如果在 Android 10 上运行的应用将
null 传递给 setSSLSocketFactory(),则会出现 IllegalArgumentException。 - android.preference 库已弃用
- ZIP 文件实用程序库变更
- 摄像头变更 android:resizeableActivity
- 电池用量跟踪 从 Android 10 开始,只要在发生重大充电事件之后拔下设备电源插头,
SystemHealthManager 就会重置其电池用量统计信息。 - Android Beam 已弃用 弃用了一些相关的 NFC API。
11.0 Android 11 API30
- 隐私设置
- 接触史通知
- 安全性
SSLSocket 实现基于 Conscrypt。 - Scudo Hardened Allocator Android 11 在内部使用 Scudo Hardened Allocator 为堆分配提供服务。
- 应用使用情况统计信息
- 针对 5G 的模拟器支持
- JobScheduler API 调用限制调试
- 文件描述符排错程序 (fdsan)
- 非 SDK 接口限制
- V1 版 Google 地图共享库已移除
- 分享内容 URI 如果您的应用与其他应用分享内容 URI,相应 intent 必须至少设置以下 intent 标记中的一个,以便授予对 URI 的访问权限:FLAG_GRANT_READ_URI_PERMISSION 和FLAG_GRANT_WRITE_URI_PERMISSION 。
- 废弃 Display#getSize 和 getMetrics
12.0 Android 12 API31
- 滚动效果 在 Android 11 及更低版本中,滚动事件会使视觉元素发光。在 Android 12 及更高版本中,发生拖动事件时,视觉元素会拉伸和反弹;发生快速滑动事件时,它们会快速滑动和反弹:
新的滚动行为会影响拖动和快速滑动动画。 - 前台服务通知用户体验延迟 ,系统可以为某些前台服务延迟 10 秒显示前台服务通知。此更改使某些短期任务在显示通知之前完成。
- 沉浸模式下的手势导航改进
- 网络 intent 解析
- 限制性应用待机模式存储分区 系统根据使用应用的时间新近度和频率来确定应用的资源请求的优先级。
- 电源管理限制 如果系统将您的应用放在受限存储分区中,会受到以下限制:
- 您每天可以在 10 分钟的批处理会话中运行作业一次。在此会话期间,系统会将您应用的作业与其他应用的作业分组在一起。 - 与系统将您的应用放在限制较少的存储分区中相比,您的应用可以运行较少的加急作业 - 您应用的不精确的闹钟每天传送一次。您在调用 set()、setInexactRepeating()、setAndAllowWhileIdle() 或 setWindow()方法时创建不精确的闹钟。 - 您的应用每天可以及时接收五条高优先级 Firebase Cloud Messaging (FCM)消息。所有后续 FCM 消息都按普通优先级传送,因此如果设备在节能模式下,这些消息可能会延迟。 - Display#getRealSize 和 getRealMetrics:废弃和沙盒
- 改进了刷新率切换
- 麦克风和摄像头切换开关
- 麦克风和摄像头指示标志
- 应用无法关闭系统对话框
- 不受信任的触摸事件被屏蔽 为了维持系统安全并保持良好的用户体验,Android 12 会阻止应用使用触摸事件,使用触摸事件时叠加层会以不安全的方式遮掩应用。
- 权限软件包可见性
- 移除了 Bouncy Castle 实现 Android 12 移除了之前废弃的加密算法(包括所有 AES 算法)的许多 BouncyCastle 实现。系统改用这些算法的 Conscrypt 实现。
- 剪贴板访问通知
- Passpoint 更新
- 更新后的非 SDK 接口限制
|