文章目录

  • 一、引言
  • 二、概念学习
    • 1. 平台版本
    • 2. API级别
    • 3. SDK版本
  • 三、参考

一、引言

前两篇文介绍了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.1 22 LOLLIPOP_MR1
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH KitKat for Wearables Only
Android 4.4 19 KITKAT
Android 4.3 18 JELLY_BEAN_MR2
Android 4.2, 4.2.2 17 JELLY_BEAN_MR1
Android 4.1, 4.1.1 16 JELLY_BEAN
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1
Android 3.0.x 11 HONEYCOMB
Android 2.3.4
Android 2.3.3
10 GINGERBREAD_MR1
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x 8 FROYO
Android 2.1.x 7 ECLAIR_MR1
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT
Android 1.5 3 CUPCAKE
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

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版本的设备分布还是会不定期(定期)更新的,还是蛮有意思的。

三、参考

  • 菜鸟教程

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

  1. Android开发学习总结(一)——搭建最新版本的Android开发环境

    最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环 境去学习,Android的更新速度比较快了,Android1 ...

  2. play-services-tasks (com.google.android.gms:play-services-tasks)”的开发者向 SDK 版本 18.0.0

    "play-services-tasks (com.google.android.gms:play-services-tasks)"的开发者向 SDK 版本 18.0.0 添加了以 ...

  3. Android开发学习---使用Intelij idea 13.1 进行android 开发

    Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...

  4. Android开发学习总结(三)——appcompat_v7项目说明

    一.appcompat_v7项目说明 今天来说一下appcompat_v7项目的问题,使用eclipse创建Android项目时,发现project列表中会多创建出一个appcompat_v7项目,这 ...

  5. Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机

    今天无意当中发现在<Android开发学习之基于ZBar实现微信扫一扫>中的一部分代码可以用来以硬件方式实现一个照相机的功能,在<Android开发学习之调用系统相机完成拍照的实现& ...

  6. Cef开发学习 - Windows平台简易的Cef浏览器,支持下载管理和多标签管理

    Cef开发学习 - Windows平台简易的Cef浏览器,支持下载管理和多标签管理 PS:本系列文章主要学习介绍Cef开发相关的内容. 文章目录 Cef开发学习 - Windows平台简易的Cef浏览 ...

  7. Android开发学习总结(四)——Eclipse在线安装ADT插件

    Android开发学习总结(四)--Eclipse在线安装ADT插件 要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件 ...

  8. 【嵌入式Android开发学习攻略】手把手教你循序渐进的学习

    [嵌入式Android开发学习攻略]手把手教你循序渐进的学习 学习嵌入式主要有以下几个方面: C语言:C是必须学的,它是最基础的 操作系统:Linux.Android   目前Linux是主流,这个一 ...

  9. android开发学习大体思路

    android开发学习: android学习的前提是java基础.如果你没有好的java基础,那就赶紧补充,我在这里不做介绍. android是基于linux的,如果你要做底层的东西,可以买一些关于l ...

最新文章

  1. 中国AI创业公司霸榜NeurIPS-AutoDL竞赛,代码已开源
  2. 第十五届全国大学生华东赛赛区开赛啦
  3. iostat 输出解析
  4. 使用Hexo+ github快速搭建自己的博客网站(一)
  5. Android中创建自己的对话框
  6. python中级_python复习之中级
  7. 小事也能看出一个人的能力
  8. 《DSP using MATLAB》示例Example4.2
  9. php5.2 json,php5.2 对json格式的支持
  10. WordPress使用360CDN替换google服务,解决WordPress打开速度变慢问题
  11. Apache24(VC15)安装步骤
  12. winapi检测鼠标是否在任务栏
  13. Android快速开发整理(库、插件,kotlin枚举注解
  14. 006 window7或虚拟机上不了网或DNS出问题
  15. 可以提升效率的待办清单APP
  16. 环境问题还是测试的老大难?
  17. 纹理过滤函数glTexParameteri
  18. HTML 网页制作 网易邮箱登录页面 关键代码
  19. java使用scanner.next方式接收键盘输入
  20. 事业单位招聘java_新华社新媒体中心2018年面向社会招聘事业单位人员

热门文章

  1. tar命令功能及选项
  2. UDS安全访问之27服务SecurityAccess
  3. 面试时,没有谈薪资,叫回去等通知,还有机会吗
  4. 给2021金三银四的程序员们-投简历100份,1份面试通知都没收到,哪里出了问题
  5. 大数据如何学习,告诉你正确的学习姿势
  6. 踏山河各种版本,求各位小伙伴点个关注
  7. 我是个程序员今年33岁还在写代码,不想干这行,该做些什么好?
  8. linux申请信号量,linux 信号量
  9. 经验分享|在龙芯2K上运行RT-Thread系统并开源
  10. Android CPU使用率:top和dump cpuinfo的不同