minSdkVersion、targetSdkVersion、targetApiLevel的区别

在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-11-06 21:15:09

minSdkVersion、targetSdkVersion、targetApiLevel的区别的相关文章

AndroidMenifest.xml中minSdkVersion、targetSdkVersion、targetApiLevel的区别

原文: AndroidMenifest.xml中minSdkVersion.targetSdkVersion.targetApiLevel的区别 - Delion - 博客频道 - CSDN.NEThttp://blog.csdn.net/yangdeli888/article/details/22722303 在default.properties中的target是指在编译的时候使用哪个版本的API进行编译. 综上,上面的四个值其实是作用于不同的时期:target API level是在编译的

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

Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion

在一年之中,也有可能只是几个月后,你会发布你的Android应用程序.但是这中间有可能会发布新的版本的Android系统,比如:6.0+. 你肯定希望你的应用可以向前兼容,当用户升级到新的Android系统时候,你的应用调用的系统API不会编译失败,也不会Crashing. 这时候就要考虑一下三个参数了:compileSdkVersion, minSdkVersion, and targetSdkVersion (它们标识什么版本的API可以使用,应用兼容的版本,编译需要的API版本) comp

compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择(copy)

英文原文:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 作者:Ian Lake,Google Android 推广工程师:翻译:韩国恺. 当你发布一个应用之后,(取决于具体的发布时间)可能没过几个月 Android 系统就发布了一个新版本.这对你的应用意味着什么,所有东西都不能用了? 别担心,向前兼容是 Android 非常关注的事情.用户在升级到新版 Android 的时候,用以前版本的 SDK 构建的现

minsdkversion

这是设置最小的sdk版本,指定开发的应用最低支持的android系统版本.低于将不能安装使用. android:maxSdkVersion:标明可以运行你的应用的最高API Level版本.这个在Android1.5, 1.6, 2.0 和2.0.1上时,如果应用设置的maxSdkVersion 值低于系统本身使用的API Level,系统将不会允许安装该应用.在系统升级后,新系统会重新校验这个值,如果新系统的API Level高于这个值,新系统会删除你的应用.在高于2.0.1的系统上,安装应用

Android SDK目录及版本号区别

今天又有人问Tools,Build-Tools,Platform-tools有什么区别,是干嘛的? 现在对SDK目录做一下总结阐述! SDK目录 add-ons 这里面保存着附加库,第三方公司为android 平台开发的附加功能系统.比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面. docs 这里面是Android SDKAPI参考文档,所有的API都可以在这里查到. extras 该文件夹下存放了Android support v4,v7,v13,v17

我的Android进阶之旅------&gt;经典的大牛博客推荐(排名不分先后)!!

本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超博客 Android中文Wiki AndroidStudio-NDK开发-移动开发团队谦虚的天下 - 博客园gundumw100博客 - android进阶分类文章列表 - ITeye技术网站CSDN博文精选:Android系列开发博客资源汇总 - CSDN.NET - CSDN资讯Android笔

推荐几篇好的博文

推荐网址: UI设计类: 源代码托管: 移动开发 界面优化 兼容屏幕 布局详解 JNI入门 AndroidMk NDK相关问题 NDK_GDB调试 CrystaX CSDN每周博文 其它博客 开发工具问题 源码控制工具 混淆反编 Unbutu使用技巧 性能测试 CVS_Git 反编译工具 Android游戏 小米刷机 三星刷机 联想刷机 蓝晨刷机 中兴刷机 华为刷机 Fulinpengda刷机 HTC刷机 摩托刷机 塞班刷机 刷机中问题 手机问题 Java底层 源码网站 源码编译 源码搜索 EO

Gradle学习目录总结

如果是你想干的事情,在别人看起来可能是很难的一件事,不过你自己很喜欢,你不会觉得很苦.我开始创业那会是28岁.对我来讲,我创业的目的不是为了自己当老板,我希望有一个平台有一个环境,我可以控制一些资源,让我去创造一个新的产品和服务: -- 周鸿祎 Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言. 当然,我们现在最多都是在Android Studio的项目中,和我一样没有接触过的就