前言
在上一篇文章[Android Studio]常见术语解释中关于对 API 的叙述有些疏漏。因此,这篇文章做为补充。本文参考了官网上uses-sdk这个文档。
什么是API level
API level : 它为一个整数,唯一地标识了框架API版本,而该框架API版本是由相应版本的 android 系统所提供的。框架API使得应用程序可以与系统底层进行交互。该框架API由以下模块组成:
一组核心的包和类
清单(manifest)文件的XML元素和属性声明
资源文件的XML元素和属性声明及访问形式
各类意图(Intents)
应用程序可以请求的各类授权,以及系统中包含的授权执行
下表说明了具体平台版本和支持的API级别的对应关系。
API level和Platform Version的区别
Platfrom Version 是相对于用户而言的,系统版本的升级会给使用Android系统的用户带来一些看的见的新特性。而 API level 是对于开发者而言的,API level是程序中的一个宏参数,是为了版本兼容的,一般是level高的兼容level低的,说白了就是给代码看的。
VERSION_CODE:是系统版本的别名,并没有什么特殊的含义。例如:Android 5.0的别名是LOLLIPOP(棒棒糖)、Android 6.0的别名是MASHMALLOW(棉花糖)
API level的作用
API级别标识为保证用户和应用程序开发者的最佳体验,起了关键作用:
它让Android平台可以描述它支持的框架API的最高版本
它让应用程序可以描述它需要的框架API版本
它使得系统可以在硬件设备上安装应用程序时能够检查版本是否匹配,使得版本不兼容的应用程序不会被错误安装在设备之上.
每个版本的Android平台都在其内部存储了自己的API级别标识。
应用程序可以用框架API提供的清单文件元素 — 来描述该应用程序可以运行的最小和最大API级别。
说白了也就是对:minSdkverion、targetSdkversion、maxSdkversion 这三个参数值的设置.其实这在Gradle中设置是一样的。具体含义见我写的另外一篇文章[Android Studio] Gradle。
API level 在调试过程中的应用
在调试程序兼容时,常常使用分辨率 + API level 用来分辨设备。例如:上面是分辨率,下面是用API level进行区分。
同时在写代码的时候将每个机子的内容打印出来,这样如果出现不兼容的UI就能快速的知道这个手机的API level,型号,分辨率。这样就能快速定位原因。