Android 版本演进
本教程共 100 篇 · 第 3 篇 · 更新于 2026-07-28 · 约 7 分钟阅读
3. Android 版本演进
本节目标:搞懂 Android 的版本号、API Level、codename 这三套编号怎么回事,知道 Android 16 带来了什么,以及开发时怎么选 API Level。
三套编号,别搞混
Android 一个版本对应三个东西,新人容易绕晕:
- 版本号:比如 Android 16、Android 15。这是面向用户的叫法。
- API Level:一个整数,比如 36、35。这是面向开发者的,每升一个版本 API Level 加 1(偶尔加 2,比如 Android 12 有 31 和 32)。
- Codename(内部代号):以前用甜点命名(Cupcake、Donut、KitKat、Oreo),Android 10 之后对外不用了,但内部还保留。比如 Android 14 内部叫 Upside Down Cake,Android 15 叫 Vanilla Ice Cream。
你在 build.gradle 里写的 compileSdk、targetSdk、minSdk 用的都是 API Level。
近年版本对照表
| Android 版本 | API Level | 发布时间 | 内部代号 |
|---|---|---|---|
| Android 10 | 29 | 2019-09 | Quince Tart |
| Android 11 | 30 | 2020-09 | Red Velvet Cake |
| Android 12 | 31 / 32 | 2021-10 | Snow Cone |
| Android 13 | 33 | 2022-08 | Tiramisu |
| Android 14 | 34 | 2023-10 | Upside Down Cake |
| Android 15 | 35 | 2024-10 | Vanilla Ice Cream |
| Android 16 | 36 | 2025 | Baklava |
Note本教程基于 Android 16(API 36),所有代码和特性说明都以这个版本为准。
几个里程碑式的版本
不用全背,但有几个版本值得记住,因为它们改变了开发方式:
- Android 1.5 Cupcake(API 3):第一个用甜点命名的版本,引入了第三方键盘、桌面小部件。
- Android 4.4 KitKat(API 19):降低内存门槛,512MB 也能跑,开启了 Android 的普及。
- Android 5.0 Lollipop(API 21):引入 Material Design、ART 替代 Dalvik、引入 RecyclerView 的雏形。很多兼容库的最低分水岭就是 21。
- Android 8.0 Oreo(API 26):通知要建 Channel、后台限制开始收紧、画中画模式。
- Android 10(API 29):取消甜点命名、引入深色模式、手势导航、分区存储雏形。
- Android 11(API 30):一次性权限、屏幕录制、聊天气泡。AsyncTask 从这版起标记废弃。
- Android 12(API 31):Material You 动态颜色、隐私指示灯。
- Android 13(API 33):运行时通知权限、按应用设语言。
- Android 14(API 34):卫星连接、应用克隆、前台服务类型强制声明。
- Android 15(API 35):防盗锁、私密空间、部分屏幕共享。
- Android 16(API 36):本教程基准,下面细说。
Android 16 带来了什么
Android 16(代号 Baklava)在 2025 年发布,主要方向:
- Adaptive Apps(自适应应用):强化大屏、折叠屏适配,新的
WindowSizeClassAPI 让响应式布局更顺手。 - 动态权限与隐私增强:进一步收紧后台数据访问。
- 健康连接扩展:Health Connect 升级,更多健康数据类型。
- 桌面窗口模式:桌面模式进一步打磨,支持更自由的多窗口。
- 性能与图形:Vulkan 改进、相机低延迟模式。
- Compose 与工具链:Android Studio 配套更新,Compose 性能持续优化。
TipAndroid 17 官网已有入口,但仍处于预览阶段,本教程不基于它写。生产项目跟最新稳定版即可。
开发时怎么选 API Level
build.gradle 里有三个关键值,理解它们的区别是基本功。
compileSdk / compileSdkVersion
编译时用哪个版本的 SDK。建议永远设成最新的稳定 API Level(现在是 36)。这样你能用上最新 API,编译器也能帮你检查新特性。
minSdk / minSdkVersion
应用能运行的最低版本。设得太高会丢用户,设得太低要写一堆兼容代码。
实际选择参考:
- 想覆盖几乎所有用户:API 24(Android 7.0) 以上还有 95%+ 占有率。
- 主流新项目:API 26(Android 8.0) 或 API 29(Android 10) 起。
- 用 Compose:Compose 最低支持 API 21,但实际项目建议 24 起步。
android {
compileSdk = 36
defaultConfig {
minSdk = 24
targetSdk = 36
}
}
targetSdk / targetSdkVersion
告诉系统「我的应用是按这个版本的目标行为设计的」。targetSdk 越低,系统会启用一些兼容模式(行为可能变老)。
Google Play 要求 targetSdk 必须跟上最近一两年,否则不让上架新应用或更新。所以这个值要定期升,升的时候要测试新版本带来的行为变化。
Warning升 targetSdk 不是改个数字那么简单。每个版本都有「行为变更」清单,比如 Android 14 强制声明前台服务类型,不声明直接崩溃。升级前务必查官方的 Behavior Changes 文档。
一个常见的踩坑
新手经常问:compileSdk 36、minSdk 24,那写代码时能不能用 API 30 才有的方法?
能,但要做版本判断:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// API 30+ 才有的方法:让内容延伸到状态栏后方
window.setDecorFitsSystemWindows(false)
} else {
// 低版本走 systemUiVisibility 兼容方案
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
或者直接用 AndroidX 提供的兼容类(如 ContextCompat、PackageManagerCompat),它们内部帮你处理了版本差异。
小结
Android 一个版本对应版本号、API Level、内部代号三套编号。本教程基于 Android 16(API 36)。开发时 compileSdk 跟最新、minSdk 按用户覆盖决定、targetSdk 跟 Google Play 要求走。下一节看 Android SDK 里都装了些什么东西。