Android开发学习——3.平台版本、SDK版本、API级别

一、引言

前两篇文介绍了Android开发的IDE——AS和AS安装时需要准备的工具包。某种程度上来说,已经可以建工程,然后开发了。

但是实际项目中,往往会涉及到一个问题,你开发的App能否运行在目标设备上,你的App与目标机器是否兼容。假设我目标是一款塞班系统的老年机,然后我装个AS开发一款安卓App,那最后结果就是浪费时间,白白开发了一款App,因为目标设备根本跑不了该程序。当然这个例子比较极端,稍微有点经验的工程师也不会做出这种傻事。但是,如果你对目标机器不了解,并且你对开发环境也不了解,只是凭感觉去做,往往或多或少会出现兼容性问题。

我这次的目标机器是一款安卓系统的智能手表,系统是Android 10.7。在我正式开发之前,我想要知道我的环境开发出来的App能否运行在该系统的智能手表上。如果不能,应该对环境做一些怎样的改动。当然,最靠谱的方式就是将App开发出来,然后装在目标机器上运行看看。但显然前期不具备该条件。当前阶段,只能在理论上判断能否正常运行起来。

初步了解下来,我需要对平台版本、SDK版本、API级别这些概念有所理解,然后可以大致确认兼容性。


二、概念学习

1. 平台版本

平台版本,其实就是安卓系统的版本。
在项目中,就是目标设备上运行的安卓系统版本。打开手机,在系统参数中也可以看到,不过一般只讨论大版本,比如Android 10、Android 9之类的。至于小版本,如10.1、10.2,不太会有人关心,就和软件版本一样,小版本往往是针对大版本打些补丁,改改bug,大版本的主要特性已经定下来了。

所以版本这个概念,一般不会有大问题,开发前,看看目标设备的系统信息就好了。

2. API级别

在了解Android的API级别之前,先得知道API是啥。

写代码的都知道,API就是编程接口(全称Application Programming Interface,取各单词首字母,简称API)。

API简介:
程序员与程序员之间协作,往往通过API。
假设我找人帮忙写代码实现一个功能,那个人哗哗哗写了几千行代码,难道我调用这个功能的时候,还得把几千行代码拷到我程序里,然后编译运行?(当然,这也可以对吧,但实际情况一般不会这么干)如果发现运行结果不对,我还得改这堆代码。
在实际情况中,往往是受委托人写了一大堆代码,然后封装起来(编成库之类的),然后提供给你一个调用的函数(Func(p1,p2,p3…)),这个函数呢有一些参数,你可以通过传入这些参数来控制调用。然后一般配个函数说明的文档,告诉你每个参数是干什么的,返回值是干嘛的(如果有)。
这样对于使用方来说,面对的就是一个函数调用,而不是几千行代码了。那API就是这个函数调用了,就像下图一样:
在这里插入图片描述

API的好处很明显,屏蔽实现细节,你只管调用就完事了。

Android系统也提供了大量API,你可以通过调用这些API来与Android系统进行交互。Android系统诞生之初就提供了框架级的API(说框架级是因为这些API不是零散的,而是由组织架构的),在之后的每个版本都会对该API进行更新升级。

API级别就是一个用于标识API框架版本的整数,它由某个版本的Android平台提供。比如,Android平台1.0,对应的API等级为1。而后每个较大版本的安卓系统更新都会对API等级进行升级,表现为API等级加1。下面是一张摘自菜鸟教程上的平台与API等级的对应表,不过只到Android5.1,完整的可以去网上找找。

平台版本API等级版本号
Android 5.122LOLLIPOP_MR1
Android 5.021LOLLIPOP
Android 4.4W20KITKAT_WATCH KitKat for Wearables Only
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.4
Android 2.3.3
10GINGERBREAD_MR1
Android 2.3.2
Android 2.3.1
Android 2.3
9GINGERBREAD
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

API等级的提升意味着什么?
每次对API等级进行提升,都是基于之前的系统API的,大多数API更改都是新增一些功能,一般不会影响老API使用(API升级的模式是向后兼容的,所以新的API仍然兼容早期的API版本。极少数情况下,也会移除或修改老的API)。API等级的更新是谷歌针对系统安全和易用性方面的改进。通过更新系统,可以增加一些功能,修补一些漏洞。对于新增的功能,安卓会增加新功能的API接口,以供开发者运用到自己的App中;对于一些漏洞病毒,谷歌也会进行封堵,开发者可以遵循新的框架API进行软件适配,从而规避风险。

3. SDK版本

SDK版本是与平台API等级是对应的。我在AS的SDK管理器中,选中了Android 10.0进行下载安装,下面是弹出的安装信息。
所以API等级可以认为就是SDK版本。
在这里插入图片描述

包括在新建一个工程前,向导程序会让你选择一个最小SDK版本,此时右侧下拉列表框里出现的也是API等级和平台版本。你选的版本越高,能适配的设备就越少。显然,最小SDK表示你的App支持的最低Android版本。
在这里插入图片描述
各API版本的设备分布还是会不定期(定期)更新的,还是蛮有意思的。
在这里插入图片描述

三、参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值