Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion
在一年之中,也有可能只是几个月后,你会发布你的Android应用程序。但是这中间有可能会发布新的版本的Android系统,比如:6.0+。
你肯定希望你的应用可以向前兼容,当用户升级到新的Android系统时候,你的应用调用的系统API不会编译失败,也不会Crashing。
这时候就要考虑一下三个参数了:compileSdkVersion, minSdkVersion, and targetSdkVersion (它们标识什么版本的API可以使用,应用兼容的版本,编译需要的API版本)
compileSdkVersion
告诉Gradle,用哪个版本的sdk编译你的应用,如果用到高版本的API,那就需要把compileSdkVersion设置为API对应的高版本。需要指出的是,改变编译的版本,不会改变应用运行时候的展现,但是新的警告或者报错可能会出现。compileSdkVersion不会包含到你的应用中,它只是纯粹的编译应用。所以,当编译时期遇见的错误和警告,最好的解决方案就是修复它们。
强烈推荐把你的compileSdkVersion设置为最新的,用最新的sdk编译应用,会检查最新的sdk对现有的代码的影响,避免已经过时的API,并且准备用最新的API,那样会使的你的应用在兼容性方面更加健壮。
需要提示的是,如果你使用了Support Library,必须使用最新的sdk进行编译,比如,为了使用 23.1.1 Support Library,你的编译版本最少为23(第一位数字一定要匹配),一般情况下,新的Support Library 发布都会伴随一个platform version提供更好的兼容。
minSdkVersion
如果编译版本设置使用最新的APIs,那么你的minSdkVersion就要设置能够使用最新APIs的版本。minSdkVersion是Google Play Store用来判定你的应用能够安装到那些设备上。也就是你应用兼容的最低版本,同时,对于开发者,当你使用lint 检查你的应用时候,会提示你哪些APIs不兼容最低版本(minSdkVersion),这时候你就要根据系统的版本来使用不同APIs,以避免运行时遇见的各种意想不到的Crashing。
一定要时刻记住你所使用的第三方库,比如 Support Libraries orGoogle Play services, 它们所支持的minSdkVersion是否跟你的应用冲突,是根据它们调整你的minSdkVersion,还是为了兼容你的minSdkVersion,而判定不同的系统版本再使用第三方的库,二者取其一,当然,如果你非要在你兼容低版本的情况下使用高版本的库,那么需要你使用 tools:overrideLibrary marker,来设置更详细的AndroidMainfest.xml.
targetSdkVersion
targetSdkVersion是Android提供了向前兼容性的主要方式。最好的方式就是把它设置最新的。
三者之间关系:
minSdkVersion <= targetSdkVersion <= compileSdkVersion
理想的关系应该是这样:
minSdkVersion (lowest possible) <=
targetSdkVersion == compileSdkVersion (latest SDK)
Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion的更多相关文章
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
对这几个概念模模糊糊,看到一篇文章就记录下来. 当你发布一个应用之后,(取决于具体的发布时间)可能没过几个月 Android 系统就发布了一个新版本.这对你的应用意味着什么,所有东西都不能用了?别担心 ...
- compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择(copy)
英文原文:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 作者:Ian Lake,Google Android ...
- compileSdkVersion,minSdkVersion 和 targetSdkVersion
compileSdkVersion(Eclipse中叫做build target) 1.在eclipse中位于项目根目录中的project.properties文件中 2.在studio中位于项目中的 ...
- compileSdkVersion, minSdkVersion 和 targetSdkVersion详解
API level API level是一个整数,它指的是我们使用的框架(Framework)的版本,也就是我们使用的sdk中的各个平台下的android.jar. 但是这个API level又和An ...
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分 (转载)
本文参考了谷歌开发者文档:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#provisional 如果 ...
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分 标签: build targetminSdkVersiont ...
- Android的minSdkVersion,targetSdkVersion,maxSdkVersion
参考http://developer.android.com/guide/topics/manifest/uses-sdk-element.html API Level 是一个整型值,表示Androi ...
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
问题引入: 有一个下载功能,在Android 5.x设备上运行正常,Android 6.x上运行异常,现象是下载进度卡在0%. 问题排查发现,是sdk的target设置为23导致,修改为21则 ...
- 彻底明确怎样设置minSdkVersion和targetSdkVersion
minSdkVersion和targetSdkVersion相信非常多人都不太理解.我在网上也看了很多关于这两者差别的文章,感觉说的都非常模糊.直到我在stackOverFlow看到Android M ...
随机推荐
- 微软ajax组件
拖个listview 然后绑定数据源,对curd选项打勾,然后拖个scriptManager进来,在拉个updatepanel进来,在updatepanel中放入个contentTemplate,吧l ...
- tostring的用法
ToString()可空参数单独使用,同时可以加一个格式化参数,具体方式如下: . 取中文日期显示_年月 currentTime.ToString("y"); 格式:2007年1月 ...
- jQuery插件的点点滴滴
说起jQuery插件,很多人的脑海种已经有了一定的雏形,仿佛感觉仅仅就是那样子,事实呢?当你看了Bootstrap.js,品读了slidesjs,观摩了jquery.cycle2.js,不禁发现,原来 ...
- asp.net实现伪静态遇到的问题
之前在一次项目(asp.net网站)中要用到伪静态技术,实现的思路大致是这样的: 在全局配置文件Global.asax(普通的类可以通过实现IHttpModule来完成)中的Application_B ...
- MYSQL 中的变量
1.用户自己定义变量 2.系统变量(全局变量,会话变量) ----------------------------------------------------------------------- ...
- ASP.net(C#)批量上传图片(完整版)
摘自:http://www.biye5u.com/article/netsite/ASPNET/2010/1996.html 这篇关于ASP.Net批量上传图片的文章写得非常好,偶尔在网上看到想转 ...
- 创建FBI树
需求:数串由2^n个'0' '1'数串组成,对于一个数串,有01混合出现,则视为F,全0数串为B,全1数串为I. 将给定数串进行切割,如10010011可以用二叉树表示为 F(10010011) / ...
- html类,id规范命名
DIV+CSS的命名规则 SEO(搜索引擎优化)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面中部IT网将对目前流行的CSS+DIV的命名规则整理如下: 页头:he ...
- 栈的C数组实现
栈是一种先进后出的数据结构.栈的基本操作包括:入栈,出栈,初始化栈,清空栈,遍历栈. C代码如下: #include <stdio.h> #define MaxSize 20 typede ...
- hdu 1078 FatMouse and Cheese_记忆搜索
做这类型的搜索比较少,看懂题意花了半天 题意:给你个n*n的图,老鼠一次最远走k步,老鼠起初在(0,0),每次偷吃的东西必须比之前偷吃的要大. #include<iostream> #in ...