<uses-sdk>
句法
<uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" />包含于
<manifest>
描述:
让你表达一个应用程序与Android平台的一个或多个版本的兼容性,通过API级别整数手段。通过应用程序表达的API级别会相比,一个给定的Android系统的API级别,这可能不同的Android设备而异。
尽管它的名字,该元素用来指定的API级别,而不是SDK(软件开发工具包)的版本号或Android平台。 API级别始终是一个整数。不能得出从其关联的Android版本号的API级别(例如,它是不一样的主要版本或主要和次要版本的总和)。
还了解版本控制您的应用程序文件。
属性:
android:minSdkVersion
整数指定为运行应用程序所需的最低API级别。 Android系统会阻止用户安装应用程序,如果系统的API级别比该属性指定的值。你应该总是声明这个属性。
注意:如果你不声明这个属性,系统假定为“1”的默认值,这表示您的应用程序与Android的所有版本兼容。如果你的应用是不是所有版本(例如,它使用API等级3中引入的API)兼容,具有API级别小于3的系统上安装时,你还没有宣布正确的minSdkVersion,那么,该应用程序将在崩溃试图访问不可用的API时运行时。出于这个原因,一定要声明在的minSdkVersion属性相应的API级别。
android:targetSdkVersion
个整数指定的API级别的应用程序的目标。如果没有设置,默认值等于该给的minSdkVersion。
此属性通知您已经对目标版本和系统不应使任何兼容的行为,以保持与目标版本的应用程序的向前兼容性测试系统。该应用程序仍然可以在旧版本上运行(向下的minSdkVersion)。
由于Android的每个新版本的发展,一些行为,甚至出现可能会改变。但是,如果平台的API级别比你的应用程序的targetSdkVersion所声明的版本时,系统会启用兼容的行为,以确保您的应用程序继续工作,你期望的方式。您可以通过指定targetSdkVersion来匹配它的运行平台的API级别禁用这种兼容性的行为。例如,在Android 3.0或更高版本上运行时还会禁用屏幕兼容模式在更大的屏幕上运行时(将该值设置为“11”或更高允许系统应用一个新的默认主题(河洛),以您的应用程序,因为API支持11级隐含支持更大的屏幕)。
有迹象表明,该系统可以使基于您为此属性设置的值很多兼容性的行为。几个这些行为是由在Build.VERSION_CODES参考相应平台的版本中描述。
为了保持与每个版本的Android沿着你的应用程序,您应该增加这个属性来匹配最新的API级别的值,然后在相应的平台版本进行全面测试您的应用程序。
介绍了:API级别4
android:maxSdkVersion
一个整数,指定该应用程序被设计为运行的最大API级别。
在Android 1.5的,1.6,2.0和2.0.1,系统中安装一个应用程序时重新验证系统更新后的应用程序时,检查此属性的值。在这两种情况下,如果应用程序的的minSdkVersion属性是比由该系统本身所使用的API级别较低,则系统将不会允许安装该应用程序。在系统更新后,再验证的情况下,这有效地将删除设备应用程序。
为了说明这个属性怎么能系统更新后会影响您的应用程序,考虑下面的例子:
在其清单申报的minSdkVersion =“5”的应用程序发布在谷歌播放。其设备运行的是Android 1.6(API等级4),下载并安装应用程序的用户。几个星期之后,用户会收到过空中系统更新到Android 2.0(API级别5)。安装此更新后,系统会检查应用程序的maxSdkVersion并成功重新验证它。应用功能正常。然而,一段时间后,该设备接收其他系统的更新,这次到Android 2.0.1(API级别6)。更新后,系统可以不再重新验证的应用,因为该系统自身的API级别(6)现在比由应用程序支持的最大增加(5)。该系统阻止应用程序是对用户可见,实际上从装置移除。
警告:本声明属性不推荐使用。首先,有没有必要设置属性为,他们被释放阻止你的应用程序到Android平台的新版本的部署方式。根据设计,该平台的新版本完全向后兼容。您的应用程序应该在新的版本中正常工作,只要它仅使用标准的API,并遵循开发的最佳实践。二,请注意,在某些情况下,宣布该属性可能会导致您的应用程序的系统升级到更高级别的API之后,从用户的设备中移除。在您的应用程序很可能将安装在空中定期收到系统更新大部分设备,所以你应该设置该属性之前考虑它们对你的应用效果。
介绍了:API级别4
Android的未来版本(Android的超越2.0.1)将不再检查或安装过程中执行maxSdkVersion属性或重新验证。谷歌Play将继续使用属性作为过滤器,但是,随着可供下载的应用程序用户展示时。
什么是API级别?
API级别是一个整数值,它唯一标识一个版本的Android平台所提供的框架API版本。
Android平台提供了一个框架的API,应用程序可以使用与底层的Android系统进行交互。该框架API包括:
一套核心包和类
一种声明manifest文件组XML元素和属性
一个声明和访问资源组XML元素和属性
一组的意图
一组权限程序能够请求,以及允许执行进包括在系统中
Android平台的后续版本可以包括更新Android应用程序框架的API,它提供。
更新到框架的API被设计,以使新的API保持与较早版本的API兼容。也就是说,在API中大多数都是添加剂和引入新的或替换功能。作为API的部分升级,老替换的部分已被弃用,但不会被删除,从而使现有的应用程序仍然可以使用它们。在极少数的情况下,该API的部分可以被修改或删除,尽管仅需要典型地这样的改变,以确保API鲁棒性和应用程序或系统的安全性。从早期版本的所有其他API部分结转无需修改。
该框架API,一个Android平台提供使用称为“API级别”的整数标识符指定。每一个Android平台的版本完全相同支持一个API水平,虽然支持是隐含的所有早期的API级别(最低API级别1)。 Android平台的初始版本提供的API Level 1和后续版本都增加了API级别。
下表指定了Android平台的每个版本支持的API级别。有关设备的相对数字,正在运行的每个版本的信息,请参阅平台版本的仪表盘页面。
Platform Version | API Level | VERSION_CODE | Notes |
---|---|---|---|
Android 6.0 | 23 | M |
API Changes |
Android 5.1 | 22 | LOLLIPOP_MR1 |
Platform Highlights |
Android 5.0 | 21 | LOLLIPOP |
|
Android 4.4W | 20 | KITKAT_WATCH |
KitKat for Wearables Only |
Android 4.4 | 19 | KITKAT |
Platform Highlights |
Android 4.3 | 18 | JELLY_BEAN_MR2 |
Platform Highlights |
Android 4.2, 4.2.2 | 17 | JELLY_BEAN_MR1 |
Platform Highlights |
Android 4.1, 4.1.1 | 16 | JELLY_BEAN |
Platform Highlights |
Android 4.0.3, 4.0.4 | 15 | ICE_CREAM_SANDWICH_MR1 |
Platform Highlights |
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 |
Platform Highlights |
Android 3.0.x | 11 | HONEYCOMB |
Platform Highlights |
Android 2.3.4 Android 2.3.3 |
10 | GINGERBREAD_MR1 |
Platform Highlights |
Android 2.3.2 Android 2.3.1 Android 2.3 |
9 | GINGERBREAD |
|
Android 2.2.x | 8 | FROYO |
Platform Highlights |
Android 2.1.x | 7 | ECLAIR_MR1 |
Platform Highlights |
Android 2.0.1 | 6 | ECLAIR_0_1 |
|
Android 2.0 | 5 | ECLAIR |
|
Android 1.6 | 4 | DONUT |
Platform Highlights |
Android 1.5 | 3 | CUPCAKE |
Platform Highlights |
Android 1.1 | 2 | BASE_1_1 |
|
Android 1.0 | 1 | BASE |
<manifest> <uses-sdk android:minSdkVersion="5" /> ... </manifest>主要的原因,应用程序将在声明的android的API级别:是的minSdkVersion告诉它使用指定的API级别引入的API的Android系统。如果该应用程序是与低级API级别的平台上不知何故安装,那么这将在运行时崩溃时,它试图访问不存在的API。该系统可以防止这样的结果通过不允许如果它要求的最低API级别比的目标设备上的平台版本更高要安装的应用程序。
还要注意的是个人的API元素的参考文档指定在介绍每个元素的API级别。包和类API级别被指定为“自<API级别>”在每个文档页面上的内容区域的右上角。类成员的API级别在它们的详细描述头部被指定,在右边缘。
<uses-permission>
句法
<uses-permission android:name="string" android:maxSdkVersion="integer" />包含于
<manifest>
描述:
请求应用程序必须按顺序给予它正确操作的权限。权限由用户授予在安装应用程序的时候,而不是在它的运行。
有关权限的详细信息,请参阅介绍和独立的安全性和权限文档权限部分。由基础平台定义的权限列表可以在android.Manifest.permission找到。
属性:
android:name
权限的名称。它可以是标准的系统的权限,例如“android.permission.CAMERA”或“android.permission.READ_CONTACTS”之一由应用与<权限>元素中定义的许可,由另一个应用程序中定义的许可,或。由于这些例子表明,一个权限名称通常包括作为前缀的包名。
android:maxSdkVersion
最高API级别在此权限应授予您的应用程序。设置该属性,如果你的应用程序需要的权限不再需要在一定的API级别开始是非常有用的。
例如,一开始用的是Android 4.4(API等级19),它不再需要时,您的应用程序要写入外部存储自己的应用程序特定的目录,你的应用程序请求WRITE_EXTERNAL_STORAGE许可(由getExternalFilesDir提供的目录()) 。然而,需要API级别18和较低的权限。所以,你可以声明此权限只需要到一个声明,如该API级别18:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />