minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四个数值到底有什么区别

在AndroidMenifest.xml中,常常会有下面的语句: 
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" android:maxSdkVersion="10" />

在default.properties中,会看到下面的语句: target=android-10

如果是使用Eclipse的话,还可能会看到这样的警告:Attribute minSdkVersion (4) is lower than the project target API level (10)

那么,这里面的minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四个数值到底有什么区别?minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion,或者大于maxSdkVersion,程序将无法安装。一般来说没有必要设置maxSdkVersion。
targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用,比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。你至少需要在minSdkVersion这个版本上将程序完整的跑一遍来确定兼容性是没有问题的。
在default.properties中的target是指在编译的时候使用哪个版本的API进行编译。

综上,上面的四个值其实是作用于不同的时期:target API level是在编译的时候起作用,用于指定使用哪个API版本(SDK版本)进行编译。minSdkVersion和maxSdkVersion是在程序安装的时候起作用,用于指定哪些版本的设备可以安装此应用。targetSdkVersion是在程序运行的时候起作用,用于提高指定版本的设备上程序运行体验。这四个数值在程序编译时也没有严格的检查,比如说,你可以将minSdkVersion设置的比maxSdkVersion还大,他会自动忽略掉错误的maxSdkVersion。

时间: 2024-10-21 01:56:05

minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四个数值到底有什么区别的相关文章

minSdkVersion、maxSdkVersion、targetSdkVersion、target释义

minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion, 或者大于maxSdkVersion,程序将无法安装.一般来说没有必要设置maxSdkVersion. targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值, 他会告诉Android平台:此程序在此版本已经经过充分测,没有问题.不必为此程序开启兼容性检查判断的工作了. 也就是说,如果t

Android sdk version and API level

确定app的系统API level,在mainfest中设置minSdkVersion和targetSdkVersion:对app进行版本控制,在mainfest中设置versionCode和versionName. Supporting Different Platform Versions Tip: In order to provide the best features and functionality across several Android versions, you shou

[翻译]在API level 17以下时正确显示适应边界的ImageView

[翻译]在APIlevel 17以下时正确显示adjustViewBounds的ImageView Correct the ImageView's adjustViewBounds behaviour on API Level 17 and below with AdjustableImageView 原文地址: http://inthecheesefactory.com/blog/correct-imageview-adjustviewbounds-with-adjustable-imagev

Android开发中遇到的问题(四)——Android中WARNING: Application does not specify an API level requirement!的解决方法

今天在手机上调试运行Andorid项目时,发现Console打印出"WARNING: Application does not specify an API level requirement!"这样的警告信息,如下图所示: 虽然不影响项目的正常运行,不过还是要找出原因,上网查了一下出现警告的原因,原来是创建项目时AndroidManifest.xml文件中没有指定Min SDK Version 解决办法:修改AndroidManifest.xml文件,在<manifest>

Android Call requires API level 11 解决方案

[原因分析] 不详,可能和Run Android Lint有点关系吧.就是创建项目时,我们设置了最低版本API Level,比如我的是8,因此,Eclipse检查我调用的API后,发现版本号不能向低版本兼容,比如我用的"Notification.Builder"是Level 11 以上才有的,自然超过了8,所以提示错误. [解决方案] 右键点击项目->Android tools ->Clear Link Markers.即可临时解决,但是如果调试用的模拟器是低版本的,则在调

[android错误] requires API level *

Call requires API level 3 (current min is 1): android.content.res.Resources#getBoolean 参考文档: http://stackoverflow.com/questions/10322482/android-lint-erroneously-thinks-min-sdk-version-is-1 解决方法: AndroidManifest.xml文件: 修改或增加minSdkVersion属性: <uses-sdk

Android开发中遇到的问题——Android中WARNING: Application does not specify an API level requirement!的解决方法

今天在手机上调试运行Andorid项目时,发现Console打印出"WARNING: Application does not specify an API level requirement!"这样的警告信息,如下图所示: 虽然不影响项目的正常运行,不过还是要找出原因,上网查了一下出现警告的原因,原来是创建项目时AndroidManifest.xml文件中没有指定Min SDK Version 解决办法:修改AndroidManifest.xml文件,在<manifest>

Attribute xx is only used in API level xx and higher (current min is &nbsp; xx)的解决方法

错误:Attribute "" is only used in API level 21 and higher (current min is   10) 问题重现: 1.在xml布局中碰到这样的问题是由于  配置了最低兼容Api. 例如在AndroidManifest中配置: <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="21" /> 2.兼容到Api

【Android】Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT

刚遇到了这个问题: Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT 解决方法: 修改 AndroidManifest.xml 中的 uses-sdk 标签,例如: <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" /> 参考:Android程序出现错误“Field