本文只介绍操作,不介绍原理,如需了解原理,请详细了解Gradle、Android Gradle Plugin以及AS项目中与Gradle有关的文件和各文件的作用。
在开发过程中经常会使用AS导入开源的项目,但是开源项目使用的Gradle与Android Gradle Plugin版本和自己的AS所使用的默认版本经常不一样(如AS能支持开源项目的版本,最好使AS支持项目版本,否则可能因为版本不一致导致项目无法正常运行),所以需要进行更换Gradle和Android Gradle Plugin版本,下面介绍实测好用的更换Gradle和Android Gradle Plugin版本的方法,根据开源项目是否能导入或打开成功,分为两种处理办法:
1、正常打开或导入项目
如果开源项目在不改变Gradle和Android Gradle Plugin版本的情况下可以正常打开或导入,可以在AS软件界面操作进行更改Gradle和Android Gradle Plugin版本,具体如下:
1.1 修改Gradle版本
1. 第一种方法(AS软件操作修改):
File->Setting->Build,Execution,Deployment->Gradle->Use local Gradle distribution->选择本地已下载并解压的Gradle版本路径。
注意:
1、Gradle默认路径:C:\Users\Administrator.gradle\wrapper\dists。
2、如默认路径中没有自己需要的Gradle版本,去官网下载解压至默认文件夹即可。
3、在选择本地文件夹的时候按上图选择至内层文件夹,否则会提示文件夹不正确。
4、修改后需重启AS方可生效。
2. 第二种方法(修改配置文件):
修改项目文件夹下的gradle/wrapper/gradle-wrapper.properties文件中的Gradle版本,修改位置如下图:
1.2修改Android Gradle Plugin版本
1. 第一种方法(AS软件操作修改):
File ->Project Structure->Project->Android Gradle Plugin Version,修改Android Gradle Plugin版本,如下图:
4. 第二种方法(修改配置文件):
修改项目文件夹下的build.gradle文件中的Android Gradle Plugin Version,修改位置如下图:
2、AS无法正常打开开源项目
AS无法正常打开开源项目,删除Gradle和Android Gradle Plugin版本相关文件后,导入项目时手动配置合适的版本,步骤如下:
- 打开你的项目的文件夹,删除如下图红色圈圈的文件,同时删除gradle文件夹,如下图:
注意:build.gradle文件是项目最外层的,不是app文件夹下面的。 - 用AS重新导入该项目,导入的时候出出现下面的提示(询问您的项目没有Gradle配置,是否要自动使用最新的Gradle版本,选择OK使用最新版本Gradle,选择Cancel手动设置本地Gradle路径),如图:
注意:
1、不要,不要,不要点OK!!!点cancel,然后在弹出的选择本地gradle地址的选项框选择本地Gradle路径后点ok即可。
2、手动设置Gradle版本路径,参照第一种情况的第一种方法(正常打开开源项目->修改Gradle版本的AS软件操作修改)
- 成功导入项目,但是会提示导入后会报错,因为你的项目的最外层的build.gradle文件里面的是空的,此时,你就需要打开你平时使用正常项目的build.gradle文件,将里面的内容全部复制过来,放进去,然后将Android Gradle Plugin版本修改为手动设置的Gradle版本对应的版本即可。
注意:Android Gradle Plugin版本与Gradle版本不一样,Android Gradle Plugin版本是Google定义的,Android Gradle Plugin版本与Gradle版本的对应关系,可以参照https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh_cn
3、修改Android Gradle Plugin版本与Gradle版本后遇到的问题
- Gradle DSL method not found 'runProguard()'
问题:找不到runProguard()函数
问题解析:runProguard()在项目的各个modle下的build.gradle中的buildTypes标签中使用,因为在新版本的gradle中,runProguard这个方法已经废弃了,并且改为新的方法了minifyEnabled 。
解决方案:将项目的各个modle下的build.gradle中的buildTypes标签中runProguard改为minifyEnabled 即可。
参考链接:
https://zhuanlan.zhihu.com/p/21473540