当你开发android平台上的应用时,对于API变化管理的理解通常时很有用处的。同样,对于API级别标识以及它在确保你的应用与即将安装的设备保持兼容方面所扮演的角色的理解也是非常重要的。
以下部分会提供一些关于API级别和它对你的应用的影响的信息。
一、什么是API级别?
API级别就是一个用来唯一标识android平台版本所提供的框架API校订本的整数值。Android平台提供了一个可以被应用程序实用跟android系统交互的框架API。框架API由以下部分组成:
- 核心包和类的集合
-
用来声明mainfest文件的xml元素和属性的集合
-
用来声明和访问资源的xml元素和属性的集合
-
Intent的集合
-
应用可以要求的许可的集合以及系统所包含的强制执行许可
每一个后续版本的android平台可以包含对上一版本的应用程序框架API的更新。
对于框架API的更新是有计划的,这样的话新版本的API就保持了对更早版本的API的支持。也就是说对于API的修改大多数是作为补充或者引入了新的功能或者是对原有功能的替换。当API的某些部分升级以后,旧的版本就过时了,但是并未被删除,所以现存的应用依然可以使用它们。在极少数情况下,API的某些部分可能会被修改或删除,当然,必须保证API的健壮和应用与系统的安全。
android平台释放的API框架用一个被称为API级别的整数来标识。每一个android平台版本精确的支持一个API水平,尽管对早期的API级别(低于1的版本)的支持会产生冲突。初始发行的android平台提供的API级别是1,后续发行的API级别依次递增。
二、API级别在android中的使用
API级别在确保最好的用户体验和应用程序开发体验中扮演着一个关键角色:
- 它让android平台可以描述它所支持的最大框架API版本
- 它让应用程序描述它所要求的框架API版本
- 它让系统处理应用程序在用户设备上的安装,比如说版本冲突的应用不能被安装。
每一个android平台在android系统内部存储它的API级别。应用程序可以使用框架API提供的mainfest元素的<use-sdk>标签描述它可以在其上运行的最低和最高的API级别,以及它被设计支持的级别。它包含三个关键的属性:
-
android:minSdkVersion:指明应用可以运行的最低API级别
- android:targetSdkVersion:指明应用设计运行的API级别
- android:maxSdkVersion:指明应用可以运行的最高API级别
当用户试图安装或者在系统更新以后重新验证一个应用程序的时候,android系统首先会检查在应用mainfest中<use-sdk>的属性,并且比较它们的值与系统内部的值。只有匹配以下两个条件时,安装才允许进行:
- 如果android:minSdkVersion属性被声明,它的值必须小于或等于系统的API级别,如果未声明,则系统会假设应用要求的API级别为1。
- 如果android:maxSdkVersion属性被声明,它的值必须大于或等于系统的API级别,如果未声明,则系统会假设没有最高API级别。
在应用的mainfest元素中,<use-sdk>是一这样的方式被声明的:
<manifest>
<uses-sdk android:minSdkVersion="5" />
...
</manifest>