首页 / Android 入门教程 / Android 版本演进

Android 入门教程

Android 版本演进

本教程共 100 篇 · 第 3 篇 · 更新于 2026-07-28 · 约 7 分钟阅读

AndroidAndroid 入门教程Android 版本API LevelAndroid 16targetSdkVersion

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 里写的 compileSdktargetSdkminSdk 用的都是 API Level。

近年版本对照表

Android 版本API Level发布时间内部代号
Android 10292019-09Quince Tart
Android 11302020-09Red Velvet Cake
Android 1231 / 322021-10Snow Cone
Android 13332022-08Tiramisu
Android 14342023-10Upside Down Cake
Android 15352024-10Vanilla Ice Cream
Android 16362025Baklava
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(自适应应用):强化大屏、折叠屏适配,新的 WindowSizeClass API 让响应式布局更顺手。
  • 动态权限与隐私增强:进一步收紧后台数据访问。
  • 健康连接扩展:Health Connect 升级,更多健康数据类型。
  • 桌面窗口模式:桌面模式进一步打磨,支持更自由的多窗口。
  • 性能与图形:Vulkan 改进、相机低延迟模式。
  • Compose 与工具链:Android Studio 配套更新,Compose 性能持续优化。
Tip

Android 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 提供的兼容类(如 ContextCompatPackageManagerCompat),它们内部帮你处理了版本差异。

小结

Android 一个版本对应版本号、API Level、内部代号三套编号。本教程基于 Android 16(API 36)。开发时 compileSdk 跟最新、minSdk 按用户覆盖决定、targetSdk 跟 Google Play 要求走。下一节看 Android SDK 里都装了些什么东西。