Android版本相关基础

今天我们来说说Android版本相关的基础,注意:是基础,很基础,非常基础!(所以大神勿喷,小弟记录一下而已!)

1、buildToolsVersion

这个从名字就很清晰了,构建工具的版本,问个问题:如何查看或确认buildToolsVersion的最新版本和历史版本呢?

查看buildToolsVersion

直接上图,图中箭头已经很明确标明,没什么好说的。

2、compileSdkVersion,minSdkVersion,targetSdkVersion

首先一个个来说一下:
1)compileSdkVersion:告诉gradle要用哪个版本Android SDK进行编译,注意:仅限于编译期
强烈建议将compileSdkVersion设置为最新的SDK版本,这样可以避免使用弃用的 API ,并且也可提前熟悉新的 API 。

2)minSdkVersion:最低兼容的SDK版本,低于该值的设备无法运行,一般我们可以通过市场上各个SDK版本的分布来确定该值大小,最好能平衡兼容率和开发、测试成本两者的关系。
另外,请注意:确保你所添加的所有第三方dependencies其minSdkVersion必须小于或等于你应用的minSdkVersion

3)targetSdkVersion:目标的SDK版本,个人认为对于开发者来说,该参数是非常重要的,它直接决定了你的应用的行为特性及开发注意要点,举个简单的例子,大家都知道Android6.0新增了运行时权限的判定,如果你的targetSdkVersion小于23,那么你根本不需要去处理什么运行时权限;如果你的targetSdkVersion大于或等于23,那么你不进行运行时权限的判定直接会无法运行的,这就是targetSdkVersion最关键的。
那么,我想部分偷懒的开发者就会想了,既然如此,就索性不升级targetSdkVersion了,这样少了很多开发的麻烦,的确,不升级targetSdkVersion的话,可以减少不少学习成本、开发成本和测试成本,如果时间过于紧急的话并无可厚非,但作为一名合格的开发者,你还是应当去升级你的targetSdkVersion,以获取最新的外观、行为、特性及安全规范等,当然,升级这个请确保进行全面有效的测试,否则小心被骂O(∩_∩)O~

所以,理想中这三者的关系如下:

minSdkVersion <= targetSdkVersion == compileSdkVersion

3、gradle版本

提个问题:AndroidStudio如何查看gradle版本呢?
部分开发者马上就说:直接去project下面的build.gradle里查看即可······
然而真的是这样子的吗?答案是否定的!
我们必须明白:gradle版本和gradle插件版本是不一样的两个东西,上面说的那个查出来的是:gradle插件版本
我们来看看如何查看这两个版本的:

gradle版本和gradle插件版本

如上图所示,很清楚了,图中显示gradle版本为4.6,gradle插件版本为3.2.0
当然,正如上面所说的,gradle插件版本也可从project下面的build.gradle里查看
同样的,还有另外的配置文件看查看和修改gradle版本,如下图所示:

gradle版本
4、Android Support包版本

我们都知道Android Support包是用来解决兼容性问题的,还是提一个问题,我们如何查看Support包的版本的呢?
答案就是去官网查:https://developer.android.com/topic/libraries/support-library/revisions.html(有可能需要翻一下墙)

Android Support包版本

如上图所示,我们在这里可以看到最新和历史的各版本Support包,但注意到上面红圈中所说的,28.0.0已经最后一个发布版的Support包了,现在谷歌鼓励开发迁移到AndroidX,这个必须知道,但不是我们今天要说的。

用过Support包的都知道,因为依赖的第三方框架参差不齐,冲突是难免的,那么我们如何处理这个冲突问题呢?
1)既然冲突了,那么AndroidStudio会以红线在对应的依赖下面标记出来,首先我们要做的就是看看到底是哪个Support包冲突了
2)查看自己所添加的所有依赖,重点关注其中冲突版本的Support包(这可真是个体力活)
3)真正的操作来,比如“xxx.xxx.xxx:mmm:vvv”这个依赖中的“com.android.support:appcompat-v7”版本与你项目中添加的版本不一致,那么请按如下操作,将该Support包排除在外,这样就以你项目中添加的版本为主了。

implementation ('xxx.xxx.xxx:mmm:vvv') {
      exclude group: 'com.android.support', module: 'appcompat-v7'
  }

4)自从Gradle4.1(Android studio3.0)新增了implementation这种依赖方式,这种依赖方式并不会产生传递依赖,故能有效的减少Support包的冲突,而且如果万一冲突的话,若该Support包你项目中并未依赖,你可以用你项目的Support包版本将该Support包添加,这样还是会以你项目添加的为准的。

你可能感兴趣的:(Android版本相关基础)