Minimum supported Gradle version is 3.3. Current version is 2.14.1.关于gradle版本的更新问题

       更新Android studio2.3以后遇到了一些问题,估计不少人在包括2.3以及其他版本的studio中都遇到过类似的,本文说的是更新gradle过程中遇到的一个问题:Minimum supported Gradle version is 3.3. Current version is 2.14.1. Please fix the project's Gradle settings......这个问题估计大多数人都会遇到过且早就解决了,所以文章本身没有什么深度,对于gradle的使用简单的了解了一下,有时间了再深入了解,目前单纯是为了希望能给遇到该问题且没解决的童鞋一点帮助,这样的问题应该不是只针对这一个版本更新时会发生,估计之前或者以后的版本在更新的时候也有可能遇到,解决方式应该是一样的,举一反三就OK,请看下文。

       在用2.3版本的Android studio(以下简称as)打开用2.3以前的as创建的项目时会发生这个问题,用2.3的as打开用旧版本的as创建的项目后,一般会弹出图1这样的窗口,也就是强烈建议你最好更新gradle相关的插件,否则某些新特性无法使用,比如Instant Run可能用不了之类的。

图1.


         当然,你选择直接关闭这个窗口或者选择第三个选项不更新的话,项目会正常打开,可以继续用之前的设置。但是当你将项目部署到设备上的时候,as的左下角会弹出图2的提示,也就是Instant Run需要指定版本的gradle。你如果没有管它的话,项目也会正常安装启动的,只不过Instant Run功能用不了。

图2.


        ok,假如你暂时就是不想更新这些插件,那下边的就不用看了,你的项目应该能像以前一样运行。倘若想与时俱进的话,那一上来你就可以点击图1中的"Update"选项了,然后等它更新完以后估计你就会在"Gradle Console"面板中看到如标题的错误提示。


图3

       解决的方法很简单:点击第二行的"Gradle settings",千万别点击第一行,因为没有反应,这两行信息并不是用一行显示不开而分行的,第一行只是提示信息,第二行是直接进入相关设置的入口。当时我就以为点击任意一行都能进入相关设置页面,但结果你知道的,浪费了不少时间,估计没多少像我这么天真的[捂脸]。
        弹出图4的窗口,从标号2和3可以看到,当前你用的是本地的gradle,版本已经是2.14.1的了,

图4.

两种选择可以解决问题:
         ①你可以直接选择将1处的单选框勾选上而不用本地的,然后点击OK以后就可以了。
         ②如果你想选择本地的gradle,那么可以不勾选1中的圈,而是在3处点击,设置你想要的gradle版本,但是低于指定版本(比如本例是3.3)的话估计还是这个错误,所以你最好选择的gradle版本大于等于指定的版本。as自带的gradle在"as安装目录\gradle\"目录下,选择相应版本就好了。比如我的as2.3带的是gradle-3.2版本,选择这个版本的话,解决不了我的问题,因为比指定的3.3版本低:


图5.

所以我只能自己下载一个gradle-3.3版本放到了某个目录下,然后重新配置才搞定。当然,上来就执行①中的方式也是OK的,省了不少事。


note:下边是总结gradle的一点问题:

as中有两处关于gradle配置的文件,两者的作用并不是一样的:

<1>一是整个项目根目录下的build.gradle配置文件,这个文件的classpath变量指向的值是as自带的gradle插件目录及版本,这个gradle可以理解是as自带的Android版gradle插件,图6和所示。它在"as安装目录\gradle\m2repository\com\android\tools\build\gradle"目录下,降低它的版本的话,就会弹出图1的更新提示框,就像上面所说,直接关闭这个窗口而不更新的话也能解决问题,就是新版本的gradle不能使用,会造成Instant Run等无法使用,项目可以运行,但是编译等工作效率低。

图6.

<2>二是项目的gradle目录下的gradle-wrapper.properties文件,这个文件是Android studio的插件android gradle plugin依赖的Gradle版本,两个gradle所指的并不是同一个插件。下图这个gradle-3.3-all.zip就是导致出错的原因,图4所指的解决方式①就是指定了这个地方的gradle版本,它是直接访问网络上的gradle的。它的版本比你本地的gradle版本高,就会造成本文所说的问题。所以,如果想降低as的gradle版本的话,可以修改这个gradle的版本,但是一般不建议这种修改方式,麻烦是一方面,具体的gradle版本还得去查,否则没有指定版本的gradle的话,还是会出错。


对于两个地方的gradle,我的理解是Gradle并不是只针对Android项目的构建工具,它可以用在多种不的项目构建中,比如可以用在Android项目中,相应就是Android版本的gradle插件,用在Python项目中,就有相应的Python版本的gradle插件...而这些"衍生的gradle"插件并不是和主Gradle同一版本,而是都依赖于这个主要的Gradle工具,比如Android中,它的编译工作依赖于插件Android gradle plugin,本例中是2.3.1版本,而这个gradle依赖于根Gradle,也就是3.3版本。具体是不是这样,留待大神给予解答。

参考:https://inthecheesefactory.com/blog/new-gradle-build-tools-with-gradle-2.5/en

           https://developer.android.google.cn/studio/releases/gradle-plugin.html

           https://gradle.org/

猜你喜欢

转载自blog.csdn.net/Builder_Taoge/article/details/70228791
今日推荐