minSdkVersion maxSdkVersion targetSdkVersion target 的区别

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)
标签: 

sdk

 

android

 

it

分类: android开发
在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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值