语法(SYNTAX):

 <uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />

被包含于(CONTAINED IN):

<manifest>

说明(DESCRIPTION):

这个元素用API 的级别(一个整数)来说明应用程序会跟哪些Android平台版本兼容。由应用程序给出的API级别会跟给定不同的设备中的Android系统的API级别比较。

尽管这个元素被用于指定API的级别,但它并不是SDK(软件开发工具包)或Android平台的版本号。API级别始终是用一个整数表示。不能够从根API级别关联的Android版本号中获取API级别信息(例如,它不是主版本号,也不是主版本号和次版本号的和)。

属性(ATTRIBUTES):

android:minSdkVersion

一个整数,它指定了应用程序运行所需要的最小的API级别。如果Android系统的API级别比应用程序清单中的这个属性值小,那么系统就阻止安装该应用程序,应该始终声明这个属性。

警告:如果没有声明这个属性,Android系统就会假设一个默认值1,它表明该应用程序会跟所有的Android版本兼容。如果应用不是跟所有的Android版本兼容(例如,应用要使用在API Level 3中引入的API),并且也没有声明正确的minSdkVersion属性,那么当应用安装到API Level 3小的系统上时,应用程序会在视图访问无效的API时崩溃。由于这个原因,必须要在minSdkVersion属性中声明适当的API Level。

android:targetSdkVersiion

一个整数,它指定了应用程序要运行的目标的API级别。如果没有设置,它的默认值等于给定的minSdkVersion属性值。作用:

  • 告诉系统,针对目标版本已经做了检测。
  • 针对目标版本,系统不应该让兼容性行能够维持app的前向兼容性。
  • app依然能够运行在较低版本的平台上(直到minSdkVersion属性值所指定的版本)。

在Android演进的每个新版本中,系统的一些行为甚至外观都可能会改变。但是,如果平台的API级别比应用程序声明的targetSdkVersion的值大,那么系统就可以让兼容性行为确保app能够继续按照期望的方式去工作。因此,可以通过设置targetSdkVersion匹配app运行时的平台API级别,禁止兼容性行为。例如,把这个属性值设置为11或更大,就会允许系统把新的默认主题应用在Android3.0或更高版本平台之上的app,并且运行在大屏幕的设备上时,也禁止screen compatibility mode (因为针对API Level 11的支持,暗示着对较大屏幕的支持)。

有很多兼容行为,系统是基于这个属性所设置的值启用的。这些行为中的一些被描述在相应平台版本(参考Build.VERSION_CODES)。

随着每个Android平台版本的发布,都应该增长app这个属性值,让它跟最新的API级别相匹配,最后再对应的平台版本上进行完整的测试。

这个属性在API Leve 4中被引入。

android:maxSdkVersion

一个整数,表明该应用要运行的最大的API Level。

在Android1.5、1.6、2.0和2.0.1中,在安装应用程序时系统会检查这个值,并且在系统升级后也会重新验证该应用程序的这个值。另外,如果应用程序的maxSdkVersion属性值比系统自身所使用的API Level低,那么系统就不会允许应用程序被安装,在因系统升级而重新验证(re-validating)的情况中,会把app从设备上删除。

以下是系统升级更新后,这个属性是如何影响应用程序的例子:

一个发布到Google Play上的应用程序,在它的清单中声明了maxSdkVersion=”5”。一个运行Android1.6(API Level 4)的用户设备下载并安装了app。几周之后,用户把系统升级到Android2.0(API Level 5),升级后,系统会检查app的maxSdkVersion属性,并成功的重新的验证了它,该应用程序能够正常运行。但是,不久之后,该设备的系统又升级到Android2.0.1(API Level 6),升级之后的系统不再重新验证该应用程序了,因为系统自己的API Level(6)比该app所支持的最大API Level还有大,因此系统会阻止把该应用程序显示给用户,就像把该应用程序从设备删除的效果一样。

警告:不推荐声明这个属性。首先,没有必要设置这个属性是因为会阻碍app在新发布的Android平台版本上部署。新的平台版本是被设计为完全向后兼容的。只要使用标准的API和遵循Best Practices,app能在新Anroid版本正常运行。其次,要注意的是,声明这个属性会导致一个结果——在系统更新到较高的API Level之后,app可能会从用户设备中删除。

在Android的未来版本中(Android2.0.1除外),在安装或重验证期间,将不再检查或强制要求maxSdkVersion属性。但Google Play在把应用程序展示给用户下载的时候,会继续使用这个属性作为过滤条件。

这个属性在API Level 4中被引入。

Android——<uses-sdk>的更多相关文章

  1. SDK接入(1)之Android Facebook SDK接入

    SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...

  2. 同步、更新、下载Android Source & SDK from 国内镜像站(转载)

    同步.更新.下载Android Source & SDK from 国内镜像站 转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download ...

  3. Android之SDK、NDK、JNI和so文件

    1.     SDK Android SDK(AndroidSoftware Development Kit),即Android软件开发工具包,Android的SDK基于Java实现,这意味着基于An ...

  4. 同步、更新、下载Android Source & SDK from 国内镜像站

    转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download the android source from china mirrors     以 ...

  5. 转-android 支付宝SDK集成

    http://blog.csdn.net/kroclin/article/details/40746779 一.前言 最近做的项目刚好要集成支付宝,上网找了很多资料,介绍得感觉不是很全面,所以我经过这 ...

  6. Android安装 sdk+jdk+Eclipse+Adt开发工具

    根据别人提供的手册和安装过程体验加以更新和详细描述 安装Android开发工具 开发Android应用程序的门坎并不高,因为Google已经为Android应用程序开发提供了免费而且跨平台的集成开发环 ...

  7. 【Android类型SDK测试(二)】环境基础

    (一)语言 Android使用的Java语言,所以要测试Android类型的SDK,Java的基础知识还是需要的. 另外,Android中有NDK类型的编程,需要知道C相关的知识. (二)环境准备 A ...

  8. 【Android类型SDK测试(一)】认识Android类型的 SDK

    (一)SDK是个什么东东 接触软件相关行业的同学都应该知道,SDK(即 Software Development Kit),软件开发包.其作用就是为开发某些软件提供一些便利的东西,包括工具 集合,文档 ...

  9. Android L SDK -- 一些有趣的新功能

    一些普通的就不提了,自己查看最新的文档就可以 文档地址 Task locking 功能:让我们在使用一个应用时,能够免受通知(消息)的打搅. 怎样使用:当我们在应用中激活任务锁模式.我们接收到的通知( ...

  10. 安装Android的SDK

    安装Android的SDK 1.首先,下载installer_r23.0.2-windows.exe 2.双击"installer_r23.0.2-windows.exe",进入A ...

随机推荐

  1. .Net Core微服务系列--配置中心

    什么是配置中心 简单来说配置中心就是对配置进行管理的一个中心.对于配置这个司空见惯的东西,我们想想为什么对于应用程序需要各种各样的配置来支撑? 我们人类没有办法掌控和预知一切,所以映射到软件系统这个领 ...

  2. Activiti历史查看

    流程执行完毕后,究竟去了哪里有些疑问. 虽然已完成的任务在act_ru_task和act_ru_execution表中都已被删除,但是这些数据还存在activiti的数据库中,作为历史改由Histor ...

  3. hdfs写并发问题

    hdfs文件写入不支持多个进程同时写入一个文件,每次只能一个FS挟持对象的人写入

  4. idea查看jar冲突和解决方法

    选中Dependencies,点上边那个按钮,出现下图 依赖图太小了,根本没法看啊?好办,点击鼠标右键,呼出右键菜单栏,然后点击Actual Size: 如果我们仔细观察上图,会发现在项目依赖图中,有 ...

  5. sshd配置文件详解

    [root@test ~]# cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v // :: reyk Exp $ # This is the ssh ...

  6. C语言作用域、链接属性和存储类型

    C/C++中作用域详解 作用域 编译器可以确认的4种作用域-代码块作用域.文件作用域.函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域. (1)代码块作用域 一对 ...

  7. ROS节点的初始化及退出详解(ros::init、SIGINT、ros::ok、ros::NodeHandle

    https://haoqchen.site/2018/04/28/ROS-node-init/ #include "ros/ros.h" #include <signal.h ...

  8. 深入浅出 Java Concurrency (1) : J.U.C的整体认识[转]

    去年年底有一个Guice的研究计划,可惜由于工作“繁忙”加上实际工作中没有用上导致“无疾而终”,最终只是完成了Guice的初步学习教程,深入的研究没有继续进行下去. 最近一直用的比较多的就是java. ...

  9. Python学习之--数字转人民币读法(解决问题的方法很重要)

    效果图: 实现代码: money = float(input("Please input the money:"))cop = int(money)Num = ['零','壹',' ...

  10. mongodb+nodejs 增删查的demo

    1.启动数据库 启动完成后显示 端口号是27017 2.创建数据库 创建一个名为mydb的数据库   3.先查询一下当然的用户,再新增一个 4.创建数据表,查询所有的表 db.createCollec ...