Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion

在一年之中,也有可能只是几个月后,你会发布你的Android应用程序。但是这中间有可能会发布新的版本的Android系统,比如:6.0+。

你肯定希望你的应用可以向前兼容,当用户升级到新的Android系统时候,你的应用调用的系统API不会编译失败,也不会Crashing。

这时候就要考虑一下三个参数了:compileSdkVersionminSdkVersion, 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)
时间: 2024-10-05 09:13:18

Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion的相关文章

如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion

当你发布一个应用之后,(取决于具体的发布时间)可能没过几个月 Android 系统就发布了一个新版本.这对你的应用意味着什么,所有东西都不能用了? 别担心,向前兼容是 Android 非常关注的事情.用户在升级到新版 Android 的时候,用以前版本的 SDK 构建的现有应用应该不会出问题.这就是 compileSdkVersion, minSdkVersion 和 targetSdkVersion 的作用:他们分别控制可以使用哪些 API ,要求的 API 级别是什么,以及应用的兼容模式.

compileSdkVersion, minSdkVersion 和 targetSdkVersion的选择(copy)

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

Android的minSdkVersion,targetSdkVersion,maxSdkVersion

Android的minSdkVersion,targetSdkVersion,maxSdkVersion - edisonlg的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/edisonlg/article/details/7855898 API Level 是一个整型值,表示Android发布的某个特定版本,新API Level相对于老API Level会增加以下内容:* 新增类.或者已有类中新增.修改.甚至删除的API* 新定义的xml tag* 新定义I

Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分

Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分 2014-01-23 13:14 10937人阅读 评论(16) 收藏 举报 分类: Android(22) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文参考了谷歌开发者文档:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#pro

如何设置minSdkVersion和targetSdkVersion

转http://www.07net01.com/2015/07/878098.html minSdkversion和targetSdkVersion相信很多人都不太理解,我在网上也看了许多关于这两者区别的文章,感觉说的都很模糊,直到我在stackOverFlow看到android Min SDK Version vs. Target SDK Version这篇文章后,我才终于弄清楚如何去设置minSdkVersion和targetSdkVersion,现在我将分享给大家. 简言之,这篇文章的目的

彻底明确怎样设置minSdkVersion和targetSdkVersion

minSdkVersion和targetSdkVersion相信非常多人都不太理解.我在网上也看了很多关于这两者差别的文章,感觉说的都非常模糊.直到我在stackOverFlow看到Android Min SDK Version vs. Target SDK Version这篇文章后,我才最终弄清楚怎样去设置minSdkVersion和targetSdkVersion.如今我将分享给大家. 简言之,这篇文章的目的是为了区分minSDK和targetSDK,这两者相当于一个区间.你能够用到targ

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 minS

彻底明白如何设置minSdkVersion和targetSdkVersion

minSdkVersion和targetSdkVersion相信很多人都不太理解,我在网上也看了许多关于这两者区别的文章,感觉说的都很模糊,直到我在stackOverFlow看到Android Min SDK Version vs. Target SDK Version这篇文章后,我才终于弄清楚如何去设置minSdkVersion和targetSdkVersion,现在我将分享给大家. 简言之,这篇文章的目的是为了区分minSDK和targetSDK,这两者相当于一个区间,你可以用到target

minSdkVersion、targetSdkVersion、targetApiLevel的区别

在AndroidMenifest.xml中,常常会有下面的语句: <uses-sdk android:minSdkVersion="4"           android:targetSdkVersion="10"          android:maxSdkVersion="10" /> 在default.properties中,会看到下面的语句:target=android-10 如果是使用Eclipse的话,还可能会看到这样