Android 版本问题

在写 Android 项目的时候可能有时候会对 Module:app 中的三个字段 compileSdkVersionminSdkVersiontargetSdkVersion 感到很疑惑,这里我们对这三个字段的作用分别进行介绍。

compileSdkVersion

顾名思义,意思就是编译的版本,用来告诉 Gradle 用什么版本的 Android SDK 来编译自己。
当我们改变 compileSdkVersion 的时候也许会出现编译警告、甚至是编译错误,虽然他并不改变运行时的行为,但是这个时候还是得修复这些错误,它们的出现一定有原因的。
这里推荐使用最新的 compileSdkVersion 进行编译,同时,在我们日常开发的时候还是使用最新的 support-Library ,要想使用最新的 support-Library 就要使用最新的 compileSdkVersion,也就是说 compileSdkVersion 的版本起码要等于 support-Library 的版本。
使用最新的 support-Library 的好处也不用多说,它为系统提供的新的 API 和 新特性提供了兼容性的支持

minSdkVersion

minSdkVersion 是用户设备是否可以运行的最低要求,同时 minSdkVersion 也是 Google 商店评判用户设备是否可以安装应用的评判标准之一。
同时 lint 会默认在项目中运行,并在你调用 minSdkVersion 没有的 API 时给出相应的警告,此时就需要我们开发者注意了,因为这个时候需要我们来解决版本兼容的问题,解决的方法就是判断是否大于相应API支持的最低版本,是的话就可以执行。
所以当我们在选择支持到什么版本的时候就需要考虑我们到底要覆盖百分之多少的手机,这在我们创建一个 Android 项目的时候可以看到,这个数据对中国用户来说其实并不准确,因为这个统计数据显示的是最近7天访问 Google 商店的手机的统计数据。

targetSdkVersion

targetSdkVersion 向我们提供了一个向前兼容的解决方案,我们更新了 compileSdkVersion 就可以使用最新的 API,但是此时如果没有更新 targetSdkVersion 的话系统不会采用最新的 API,换句话说系统好像还是 targetSdkVersion 的系统,所以要真正的支持后来的 Android 版本就需要同时调整 targetSdkVersion 和 compileSdkVersion。

总结

总的来说,一般情况下,compileSdkVersionminSdkVersiontargetSdkVersion 三者之间的关系应该是:
minSdkVersion <= targetSdkVersion <= compileSdkVersion
但是理想情况下,我们希望它们的关系是:
minSdkVersion(尽量的低) < targetSdkVersion = compileSdkVersion

你可能感兴趣的:(Android 版本问题)