minSdkVersion maxSdkVersion targetSdkVersion target 的区别
minSdkVersion
描述:app最低支持的sdk版本号
作用:如果手机SdkVersion小于app中定义的minSdkVersion,则android系统不允许安装该app
定义位置:AndroidManifest.xml
默认值:1
检测时机:app安装
maxSdkVersion
描述:app最高支持的sdk版本号
作用:如果手机SdkVersion大于app中定义的maxSdkVersion,则android系统不允许安装该app
定义位置:AndroidManifest.xml
默认值:无
检测时机:app安装(Android 2.0.1之后不再检测)
targetSdkVersion
描述:目标SdkVersion
作用:标识在指定的SdkVersion已做充分测试,Android系统不会针对此版本进行兼容处理
如果targetSdkVersion=16的app跑在SdkVersion=16的手机上,则Android系统不会做任何兼容处理,从而提高了性能
如果targetSdkVersion=16的app跑在SdkVersion=17的手机上,则Android系统需要做兼容处理以保障app仍然以16的特性运行
如果targetSdkVersion=16的app跑在SdkVersion=15的手机上,可能会出现错误,所以至少要保证app在minSdkVersion的手机上测试通过
定义位置:AndroidManifest.xml
默认值:minSdkVersion
检测时机:运行时
target
描述:build target
作用:编译、构建工程时使用的SdkVersion
定义位置:project.properties
默认值:无
检测时机:编译生成 .apk
附Android平台SdkVersion
描述:Android SDK 版本
查询:手机设置 - 关于手机 - Android版本
Android平台版本(Build.VERSION.SDK)、API版本(Build.VERSION.SDK_INT)和版本代号之间的关系:
minSdkVersion、targetSdkVersion、targetApiLevel的区别
(2011-11-02 14:37:35)在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。