compileSdkVersion,minSdkVersion,targetSdkVersion名词解释

CompileSdkVersion

compileSdkVersion告诉Gradle用哪个Android SDK版本编译你的应用。如果你使用了新的API,就要使用对应API Level的Android SDK。Android SDK和API Level的对应关系可以在Android Studio中查看。compileSdkVersion,minSdkVersion,targetSdkVersion名词解释_第1张图片
compileSdkVersion只是在编译时使用的,并不会被包含到APK中,所以是推荐使用最新的SDK进行编译的,可以避免使用新弃用的API,也可以为使用新的API做准备。

minSdkVersion

minSdkVersion 字面意思,应用能支持的最低SDK版本。也就是应用可以运行的最低要求,为的是尽量覆盖最多的人群。如何合理的设置这个值,可以查看目前不同版本的android设备的市场占有率。
查看地址:https://developer.android.google.cn/about/dashboards/
注意你项目中使用的库,他们可能有自己的minSdkVersion m,你的应用设置的minSdkVersion必须大于等于这些库的minSdkVersion。

targetSdkVersion

targetSdkVersion 能够使用的最高SDK版本。以下两个场景用于加强理解。

场景一:比如说你现在的targetSdkVersion是20(Android4.4),现在想在项目里使用Materal Design风格的一些控件,这个新特性是在Android 5.0增加的,这样你就要把targetSdkVersion设置为21(Android5.0)。

场景二:targetSdkVersion 23(Android 6.0)时,新增了运行时权限概念。Android6.0之前,在清单文件中列出权限后,在应用安装时给出声明权限列表,用户只能全部接受或者全部拒绝(拒绝系统不会安装应用)。Android6.0开始,清单文件中列出权限后,还必须在运行时请求所需要的每项危险权限。用户可以授权或拒绝,即使拒绝权限,应用仍然可以继续运行有限功能。如果你的项目targetSdkVersion小于23,那么系统就不会应用最新的变化。也就是说,即使你需要一些危险权限,仍不需要运行时请求授权,只要在清单文件中列出就可以。

如果你的compileSdkVersion设置的是23或23以上,你就可以使用新的API先适应一下这种新的变化。可以在你适应了之后就把targetSdkVersion升级。也就是在介绍compileSdkVersion时候提到的,为使用新的API做准备。

综上来看,三者值的关系是:
minSdkVersion<=targetSdkVersion<=compileSdkVersion

你可能感兴趣的:(android)