AndroidManifest.xml文件详解(uses-sdk)

语法(SYNTAX):

<uses-sdkandroid: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属性值。

这个属性用于通知系统,应用测试时所针对的目标平台版本,并且系统不应该启用任何兼容行为来维护应用程序跟目标平台版本的向前兼容性。应用程序依然能够运行在较低版本的平台上(一直到minSdkVersion属性值所指定的版本)。

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

系统会基于这个属性所设置的值,启用很多兼容行为。这些行为的一些内容通过相应平台版本的Build.VERSION_CODES参考来描述。(http://developer.android.com/reference/android/os/Build.VERSION_CODES.html

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

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

android:maxSdkVersion

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

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

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

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

警告:不推荐声明这个属性,首先,没有必要设置这个属性是因为,这样会阻止该应用程序在新发布的Android平台版本上运行。通过设计,新的平台版本时完全向后兼容的。该应用程序应该在升级后的平台上能够正常运行。其二,要注意的是,在某些情况中,声明这个属性在用户设备的系统升级较高的API Level之后,能够导致该应用程序被删除。大多数应用所在的设备都会定期的接到在线升级的请求,因此在设置这个属性之前,要仔细考虑该属性给应用程序所带来的影响。

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

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

引入版本(INTRODUCED IN):

API Level 1

 

转载于:https://www.cnblogs.com/phonegap/archive/2012/05/30/2535809.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程

在windows界面下&#xff0c;通过磁盘管理器&#xff0c;从硬盘中分出40G的空闲空间。重启电脑&#xff0c;进入BIOS&#xff0c;将启动模式修改为ACHI(如果想系统安装成功后可以直接使用无线wifi&#xff0c;请将security boot关闭&#xff1b;否则&#xff0c;默认只能使用有…

Ubuntu10.10的网络配置

有一阵子着实对Ubuntu的网络配置很迷惑&#xff0c;耐下心来仔细上网找了找&#xff0c;有点小心得&#xff0c;总结一下。 先说下大概的配置过程&#xff0c;再去细究一些情况。 一、配置大概分三类&#xff1a;通过配置文件配置、通过命令配置、通过图形化的网络连接菜单配置…

sp_executesql介绍和使用 转

转自http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.htmlexecute相信大家都用的用熟了&#xff0c;简写为exec,除了用来执行存储过程&#xff0c;一般都用来执行动态Sql sp_executesql&#xff0c;sql2005中引入的新的系统存储过程&#xff0c;也是用来处理动态s…

linux多网卡udp组播收不到数,UDP组播,完成端口,双网卡收不到数据?帮帮忙

当前位置:我的异常网 网络通信 UDP组播&#xff0c;完成端口&#xff0c;双网卡收不到数据&#xff1f;帮帮忙UDP组播&#xff0c;完成端口&#xff0c;双网卡收不到数据&#xff1f;帮帮忙www.myexceptions.net 网友分享于&#xff1a;2013-04-13 浏览&#xff1a;848次UDP…

DllMain详解

1 DLL的进入/退出函数 1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样&#xff0c;DLL也有一个入口函数&#xff0c;就是DllMain。以“DllMain”为关键字&#xff0c;来看看MSDN帮助文档怎么介绍这个函数的。 The DllMain function is an optional method of entr…

linux 视频学习

Linux 系统管理员要求对系统进行管理&#xff0c;备份等操作&#xff0c;linux程序员需要掌握c,c,java,php,jsp等 Linux平台上的开发&#xff0c;包括vi,gcc,gdb,make,jdk,tomcat,mysql… 书籍介绍&#xff1a;鸟哥LINUX私房菜&#xff0c;LINUX编程从入门到精通&#xff0c;li…

linux安装tensorflow教程,真正从零开始,TensorFlow详细安装入门图文教程!

在正式开始之前我想说&#xff1a;一定要注意窗口给出的提示(英文)。在实际操作中可能会碰到各种各样的问题&#xff0c;但常见的问题其实都可以根据它的报错信息找到原因&#xff0c;只要上网搜一搜相应的信息就能解决&#xff0c;甚至它自己就会给出解决的建议。如果你发现你…

引路蜂地图API:Gis.Navigation包定义

本包提供了路口到路口实时导航API&#xff0c;从地图服务器返回的路径信息含有文字和路径的地理坐标信息&#xff0c;类NavigationEngine根据路径和当前坐标实现实时导航。它内部含用三个工作线程&#xff1a; Location Monitor 实时监视当前位置坐标是否偏离路径&#xff0c;如…

ubuntu下安装opensips

1. 下载opensips1.8版本&#xff0c;并解压到 "/usr/local/src" 目录下 &#xff1b;2. 安装必要的软件包&#xff0c;apt-get install flex bison libncurses-dev3. 进入opensips源码目录&#xff0c;make menuconfig出现opensips的配置界面后1) 选择"Configur…

linux 修改Db2主机名,修改DB2服务器的主机名

环境:产品&#xff1a;DB2 UDB平台&#xff1a;AIX&#xff0c;Solaris&#xff0c;HP-UX&#xff0c;Linux&#xff0c;Windows版本&#xff1a;V8 V9.1V9.5为了修改服务器的主机名&#xff0c;我们可以在DB2数据库服务器上执行以下步骤来实现&#xff1a;1) 停止DB2管理服务器…

用OpenMP加速你的程序[转]

最近在看多核编程。简单来说&#xff0c;由于现在电脑CPU一般都有两个核&#xff0c;4核与8核的CPU也逐渐走入了寻常百姓家&#xff0c;传统的单线程编程方式难以发挥多核 CPU的强大功能&#xff0c;于是多核编程应运而生。按照我的理解&#xff0c;多核编程可以认为是对多线程…

错误./hello: error while loading shared libraries: libQtGui.so.4: cannot open shared object file:

之前一直想在ARM 上跑qt&#xff0c;但都出现错误&#xff1a; ./hello: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory 这主要是ARM 上的运行环境设置不当&#xff1a; 我用的是飞凌的6410 环境变量设…

linux 指令引用变量,Linux之变量引用与命令替换

在bash脚本编写中&#xff0c;我们时常需要引用变量与替换命令&#xff0c;为规范操作&#xff0c;现对其做简单的总结说明。引用引用就是指将字符串用引用符号括起来&#xff0c;以防止特殊字符被shell脚本解释为其他意义。引用时屏蔽特殊字符的特殊意义&#xff0c;而将其解释…

有些垃圾网站转载都不会

有时会看到我的文章被转载&#xff0c;只要保留作者信息和原文链接&#xff0c;并且忠实于原文都是很欢迎的。这里的忠实原文应该是最基本的了吧&#xff0c;转载嘛&#xff0c;最简单的也就是拷贝粘贴吧&#xff0c;可发现有些垃圾网站&#xff0c;连拷贝粘贴都做不好&#xf…

移植tslib到开发板及部分问题解决

qt的tslib的具体移植步骤和过程就不多讲了&#xff0c;我说说我按照手册移植好tslib后在开发板运行提示的错误以及我的解决方法&#xff0c;当然每个人的提示可能一样&#xff0c;解决方法就不一样&#xff0c;我也是个初学者&#xff0c;所以方法仅供大家参考&#xff01;问题…

Content Provider 基础 之URI

Keywords: content provider, URIContent Provider这个东西在Android平台上是最常用的共享数据的方法&#xff08;似乎应用程序之间共享数据也只有这种方法吧&#xff0c;待求证&#xff09;。虽然常用&#xff0c;但是这个东 西要理解透彻还是要先掌握一些基础的。URI就是Cont…

linux shell 原理,linux下shell的工作原理

linux下shell的工作原理2009-12-8 10:19:53 出处&#xff1a;https://www.yqdown.comshell是用户和Linux操作系统之间的接口。Linux中有多种shell&#xff0c;其中缺省运用的是Bash。本章讲述了shell的工作原理&#xff0c;shell的种类&#xff0c;shell的一般操作及Bash的特…

解决SerMyAdmin无法登陆的问题

1. 首先确认默认的用户名和密码&#xff0c;因为每个版本的SerMyAdmin的默认用户名密码可能不同&#xff0c;根据 《Building Telephony Systems with OpenSIPS 1.6》这本书上所说的SerMyAdmin的用户名和密码是 adminsetup和secret。但是从我的SerMyAdmin安装包里的MySql数据…

oracle.cmd

--更改列顺序 SELECT * FROM ALL_OBJECTS WHERE OWNER TDDJ AND OBJECT_NAMELSZD_JZDZB AND OBJECT_TYPETABLE--54529 SELECT OBJ#,COL#,NAME FROM SYS.COL$ WHERE OBJ# 57689; UPDATE SYS.COL$ SET COL# 9 WHERE OBJ# 57689 AND NAME XMBM; UPDATE SYS.COL$ SET COL# 7 WHE…

Linux部署动态网页,linux构建动态WEB服务器安装篇

linux构建动态WEB服务器安装篇发布时间&#xff1a;2008-09-18 08:50:01 作者&#xff1a;佚名 我要评论基本配置安装web服务器:httpd-2.X.X先优化吧根据CPU设置变量#export CFLAGS”-O2 -marchpentium4 -pipe” && CXXFLAGS$CFLAGS“-march”选项表示为特定的cpu…