Android小白进阶之路--项目需求1

自学郭霖《第一行代码》第二版一个月,发现这确实一本非常适合小白的书,从安装Android Studio到创建第一个活动最后写下第一行Android代码,上面写的都非常清楚。以为这样按着书本内容学下去,不求能变成什么大神(不现实),最起码能在Android项目上有一定自学能力,遇到问题能找到方法去解决,能看懂别人写的代码,这是我梦寐以求想得到的能力。刚起步这个开始是贼痛苦也是很迷茫的,也不知道这个过程什么时候能够结束,而我自己能做得就是把握好当下每一天,自己天天有进步就好。还有最重要的一点:每天提醒自己不能懒惰,不能放纵自己。

《第一行代码》这本书我了头三章,现在在看第四章碎片的部分。本以为这样按部就班能把整部书这样循环渐进地学习下去,但是我人生第一个Android项目来临了。这是一个关于打印机的项目,就是扫码支付然后打印出小票,看似我们生活息息相关的一幕,却难倒了我。哪能怎办,硬着头皮上呗,我同事告诉我技术就是让逼出来的。不会的东西只能自己去查,出现错误自己研究。没人能帮你只能靠你自己。所以今天开始结合项目地去学习。首先我拿到需求看了一下,需求1:基于安卓4.2.2系统做应用开发。看到这个需求我隐约记得书上第一章讲到过,于是赶紧去翻书,找到了app目录下的build.gradle文件对android闭包所有内容又重新看了一遍,刚开始以为是要改这个地方


后来发现这里的 25表明用Android7.1系统的SDK编译。然后去一个Android交流群问了一下,

人告诉我有两个问题:第一,你只是在4.2.2系统上运行(实际项目根本不会这么做)。第二还是最低兼容4.2.2版本以上版本都好使。我看到这个问题第一想到的是在创建项目的时候会有一个选项,让你选择最低兼容版本。当然你也可以事后改,所要改的地方是在:


minSdkVersion用于指定项目最低兼容的Android系统版本,这里指定成15表示最低兼容到Android4.0(他们告诉我现在最低兼容4.4)。targetSdkVersion指定的值表示你在该目标版本上已经做过了出充分的测试,系统将会为你的应用程序启用一些最新的功能和特征。比如说Android6.0系统中引入运行时权限这个功能,而如果你将targetSdkVersion指定成23或者更高,那么系统就会为你的程序启用运行时权限功能,而如果你将targetSdkVersion指定成22,那么就说明你的程序最高只在Android 5.1系统上做过充分的测试,Android6.0系统中引入的新功能自然就不会启动了。这时候我就想问了这里的15、25是代表什么意思?其实这里的15、25代表的是API等级。那么API等级又是什么?API级别是一个整数值,它唯一标识了一个具体版本的Android平台,及其框架的API的版本。

Android平台提供了一套框架API,使得应用程序可以与系统底层进行交互。该框架API由以下模块组成:

一组核心的包和类

清单(manifest)文件的XML元素和属性声明

资源文件的XML元素和属性声明及访问形式

各类意图(Intents)

应用程序可以请求的各类授权,以及系统中包含的授权执行

每个Android平台的后续版本会包括它提供的更新的Andr​​oid应用程序框架的API。

该框架的API的更新设计,使高版本的API与早期版本兼容。也就是说,在新版本API中大多数都是新增功能,和引进新的或替代的功能。作为API的部分升级,老的替换的部分已过时,但不会从新版本中删除,使得已有的应用程序仍然可以使用它们。在极少数情况下,旧版本API的部分可能被修改或删除,通常这种变化是为了保障API的稳定性及应用程序或系统的安全。所有其他早期版​​本的API将不做修改的保留。

一个Android平台提供的框架API,被指定一个整数标识符,称为“API级别”。每一个版本的Android平台只支持有一个API级别,虽然该支持是隐含地包括了所有早期的API级别(一直到API级别1级)。Andr​​oid平台的最初版本提供的框架API级别是1级,随后的版本依次递增。

应运API 等级的意义:

API级别标识为保证用户和应用程序开发者的最佳体验,起了关键作用:

它让Android平台可以描述它支持的框架API的最高版本

它让应用程序可以描述它需要的框架API版本

它使得系统可以在硬件设备上安装应用程序时能够检查版本是否匹配,使得版本不兼容的应用程序不会被错误安装在设备之上.

每个版本的Android平台都在其内部存储了自己的API级别标识。

应用程序可以用框架API提供的清单文件元素—来描述该应用程序可以运行的最小和最大API级别,以及应用程序开发者设计期望运行的平台版本。三种属性分别描述如下:

android:minSdkVersion—指明该应用程序可以运行的API最低版本。默认是“1”。

android:targetSdkVersion—指明该应用程序设计时期望运行的目标API版本。在某些情况下,这允许应用程序使用目标API级别下定义的清单元素或行为,而不是只限于使用最低API级别定义的内容。(译者注:android之targetsdkversion的理解---兼容性问题)

android:maxSdkVersion—指明该应用程序可以运行的最高API级别。重要声明:使用该属性之前请阅读文档。

比如,要指明一个应用程序能够运行的最低API级别,应当在该应用程序的清单文件的元素中加入android:minSdkVersion属性。android:minSdkVersion的值是一个正整数,对应的是该应用程序能够运行的最低平台的API级别标识。

用户尝试安装一个应用程序,或者在系统升级后重验证应用程序的时候,Android系统首先会检查应用程序的清单文件中的属性,将其与系统内部API级别对比。系统只有在满足下列情况时才允许进行应用程序安装:

如果声明了android:minSdkVersion属性,其属性值必须小于或等于该系统的API级别对应的整数值。如果未声明,系统会默认该应用程序运行需要的最低API级别是1。

如果声明了android:maxSdkVersion属性,其属性值必须等于或大于该系统的API级对应的整数值。如果未声明,系统会默认该应用程序没有最高API级别限制。请通过阅读文档以获得系统如何处理该属性的更多信息。

应用程序清单文件中声明该属性后,元素看起来应类似于下面的例子:

这样做的主要原因是,应用程序会通过android:miniSdkVersion声明的API级别来告知系统——该应用程序使用的API是指定引入的API级别。假如没有这种属性声明,一个应用程序如果因为某些不知名的原因被安装在低级别API系统之上,那么该应用程序会在运行时因为尝试访问不存在的API而崩溃。为此,Android系统通过不允许应用程序被安装在不满足其最低API级别要求的目标硬件上来防止此类结果发生。

例如,android.appwidget类包是在API级别3中开始引入的。如果一个应用程序使用了这个API,就必须通过指明android:minSdkVersion属性为3来声明运行的最低要求。于是,该应用程序就可以在Android 1.5(API级别3级)、Android 1.6 (API级别4级)等平台上安装,但是在Android 1.1 (API级别2级)和Android 1.0平台(API级别1级)上却是无法安装的。如下是平台版本和API等级对应关系表:

Android 7.1            25

Android 7.0           24

Android 6.0           23

Android 5.1            22

Android 5.0            21

Android 4.4W         20              仅限 KitKat for Wearables

Android 4.4            19

Android 4.3            18

Android 4.2、4.2.2     17    

Android 4.1、4.1.1      16

Android 4.0.3、4.0.4     15

Android 4.0、4.0.1、4.0.2     14

Android 3.2               13

Android 3.1.x            12

Android 3.0.x            11

Android 2.3.4            10

Android 2.3.3            10

Android 2.3.2            9

Android 2.3.1            9

Android 2.3               9

Android 2.2.x            8

Android 2.1.x            7

Android 2.0.1           6

Android 2.0               5

Android 1.6                4

Android 1.5               3

Android 1.1               2

Android 1.0                1



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容