Android版本 (1.0~14.0) 与API Level (SDK版本1~34) 对应表

什么是 API 级别?

API 级别是一个对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值。

Android 平台提供了一种框架 API,应用可利用它与底层 Android 系统进行交互。 该框架 API 由以下部分组成:

  • 一组核心软件包和类
  • 一组用于声明清单文件的 XML 元素和属性
  • 一组用于声明和访问资源的 XML 元素和属性
  • 一组 Intent
  • 一组应用可请求的权限,以及系统中包括的权限强制执行。
  • 每个后续版本的 Android 平台均可包括对其提供的 Android 应用框架 API 的更新。

框架 API 更新的设计用途是使新 API 与早期版本的 API 保持兼容。 也就是说,大多数 API 更改都是新增更改,会引入新功能或替代功能。 在 API 的某些部分得到升级时,旧版的被替换部分将被弃用,但不会被移除,这样现有应用仍可使用它们。 在极少数情况下,可能会修改或移除 API 的某些部分,但通常只有在为了确保 API 稳健性以及应用或系统安全性时,才需要进行此类更改。 所有其他来自早期修订版的 API 部分都将结转,不做任何修改。

Android 平台提供的框架 API 使用叫做“API 级别”的整数标识符指定。 每个 Android 平台版本恰好支持一个 API 级别,但隐含了对所有早期 API 级别(低至 API 级别 1)的支持。 Android 平台初始版本提供的是 API 级别 1,后续版本的 API 级别递增。

下表列出了各 Android 平台版本支持的 API 级别。

平台版本API 级别VERSION_CODE
Android 1434UPSIDE_DOWN_CAKE
Android 1333TIRAMISU
Android 1232S_V2
Android 1231S
Android 1130R
Android 1029Q
Android 928Pie
Android 8.127Oreo
Android 826Oreo
Android 7.125Nougat
Android 7.024Nougat
Android 6.023Marshmallow
Android 5.122LOLLIPOP_MR1
Android 5.021LOLLIPOP
Android 4.4W20KITKAT_WATCH
Android 4.419KITKAT
Android 4.318JELLY_BEAN_MR2
Android 4.2、4.2.217JELLY_BEAN_MR1
Android 4.1、4.1.116JELLY_BEAN
Android 4.0.3、4.0.415ICE_CREAM_SANDWICH_MR1
Android 4.0、4.0.1、4.0.214ICE_CREAM_SANDWICH
Android 3.213HONEYCOMB_MR2
Android 3.1.x12HONEYCOMB_MR1
Android 3.0.x11HONEYCOMB
Android 2.3.3、2.3.410GINGERBREAD_MR1
Android 2.3、2.3.1、2.3.29GINGERBREAD
Android 2.2.x8FROYO
Android 2.1.x7ECLAIR_MR1
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUT
Android 1.53CUPCAKE
Android 1.12BASE_1_1
Android 1.01BASE

语法

<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />

包含于

<manifest>

参考

Android 开发者 | Android Developers
分发信息中心 | Android 开发者 | Android Developers

<think>好的,我现在需要回答用户关于Android不同API版本特性及兼容性的问题。首先,我需要理解用户的具体需求。用户提到“不同Android API版本的功能或兼容性”,所以需要整理各个主要版本的特性变化,并说明如何做兼容性处理。 接下来,我得回忆一下Android的主要版本更新。比如Android 5.0引入Material Design,6.0的运行时权限,7.0的文件权限变化,8.0的后台限制,9.0的网络限制,10.0的后台启动Activity限制,11.0的存储权限调整,12.0的隐私仪表盘,13.0的通知权限,14.0的后台服务限制等。这些版本的变化对开发者的影响较大,需要重点说明。 然后,用户提供的引用中有关于minSdkVersion的设置,后台启动Activity的问题,file_paths的配置,以及高版本API在低版本系统的兼容处理。需要将这些内容整合到回答中,确保引用正确。 在结构方面,应该先概述API版本升级带来的问题,然后分版本介绍特性及兼容性适配,最后给出通用兼容性处理方法。每个版本需要说明关键特性、兼容性问题及解决方法,并标注对应的引用来源。 需要注意引用标注的位置,例如在提到Android Q后台启动Activity限制时,要引用[^2]。在讨论高版本API在低版本系统的兼容处理时,引用[^4]。同时,引用中的minSdkVersion设置和file_paths配置也要适当引入。 还需要检查每个要点的正确性,比如Android 4.4引入透明状态栏,是否准确?记得Android 4.4(API 19)确实在界面设计上有较大变化。Android 8.0的后台限制,如后台服务需要前台服务权限,这一点也需要确认。 另外,回答中的代码示例,比如file_paths.xml的配置,要使用正确的格式,用代码块包裹,并注意转义字符是否正确处理。例如用户提供的引用[^3]中的XML内容,需要正确展示。 最后,生成相关问题时要确保问题主题相关,能够引导用户进一步思考或解决实际问题。比如问如何适配Android 10的存储权限,如何处理Android 6.0的运行时权限等。 现在需要将以上思路整理成结构清晰的中文回答,确保引用正确,语法正确,数学公式正确使用$...$,独立公式用$$...$$,但在这个问题中可能用不到数学公式,所以重点在代码块和引用标注上。</think>### Android不同API版本特性及兼容性适配指南 #### 一、Android版本升级的核心矛盾 随着Android系统迭代,新API版本引入新功能,但旧设备无法及时更新系统。开发者需通过`minSdkVersion`和`targetSdkVersion`平衡功能兼容性[^1]。例如设置`minSdkVersion=8`可兼容到Android 2.2,但需在代码中处理新特性失效的情况。 #### 二、关键版本特性及适配方案 1. **Android 5.0 (API 21)** - **特性**:Material Design设计语言、JobScheduler API - **兼容性**:使用AppCompat库实现材质设计向下兼容 ```xml implementation 'androidx.appcompat:appcompat:1.6.1' ``` 2. **Android 6.0 (API 23)** - **特性**:运行时权限机制 - **适配方案**: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE); } ``` 3. **Android 7.0 (API 24)** - **特性**:FileProvider文件共享机制 - **适配步骤**: ① 声明FileProvider: ```xml <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> ``` ② 创建`res/xml/file_paths.xml`: ```xml <?xml version="1.0" encoding="utf-8"?> <paths> <external-path name="external_files" path="." /> </paths> ``` 4. **Android 10 (API 29)** - **特性**:禁止后台启动Activity、分区存储 - **适配方案**: - 使用`ActivityResultContracts.StartActivityForResult`替代直接启动 - 访问媒体文件使用`MediaStore` API - 关键限制:即使有前台服务也无法后台启动Activity[^2] #### 三、通用兼容性处理策略 1. **版本检测** ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 使用新API } else { // 降级方案 } ``` 2. **兼容库选择** | 功能模块 | 兼容库 | |----------------|-------------------------| | 界面组件 | AndroidX AppCompat | | 生命周期管理 | AndroidX Lifecycle | | 权限处理 | AndroidX ActivityResult | 3. **测试策略** - 使用Android Studio的`API Level Filter`进行多版本测试 - 重点关注`minSdkVersion`和`targetSdkVersion`边界版本 #### 四、典型问题解决方案 **场景**:Android 9.0 (API 28)网络限制 - **问题**:默认禁止明文HTTP流量 - **适配**: ① 在`res/xml/network_security_config.xml`中配置: ```xml <network-security-config> <base-config cleartextTrafficPermitted="true"/> </network-security-config> ``` ② 在AndroidManifest中引用: ```xml <application android:networkSecurityConfig="@xml/network_security_config"> </application> ``` **场景**:Android 12 (API 31)模糊定位 - **特性**:新增`ACCESS_COARSE_LOCATION`和`ACCESS_FINE_LOCATION`分离 - **适配**:在清单文件明确声明精度需求: ```xml <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值