Android Studio 中的Gradle版本介绍
如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。不了解Project目录下中的版本与里面的版本号区别。这两个插件的版本一旦不匹配上,还容易造成更多的编译错误。但是这两个插件的版本号却不同步。针对这个问题,我今天好好介绍介绍。希望能够让大家明白这两个插件的区别以及对应关系。Gradle 不是Google开发的。Gr
Android Studio 中的Gradle版本介绍 (zinyan.com)https://zinyan.com/?p=144
前言
如果你针对Android Studio中的Gradle插件有不懂。打开老项目的时候,经常由于Gradle的版本号问题造成项目无法编译。
不了解Project目录下build.gradle
中的com.android.tools.build:gradle
版本与gradle/wrapper/gradle-wrapper.properties
里面的版本号区别。
这两个插件的版本一旦不匹配上,还容易造成更多的编译错误。
但是这两个插件的版本号却不同步。
针对这个问题,我今天好好介绍介绍。
希望能够让大家明白这两个插件的区别以及对应关系。
说明
gradle 介绍
Gradle 不是Google开发的。Gradle是有专门的团队进行开发维护。并且完全开源的自动化构建工具。IDEA 默认集成了该工具。可以方便的帮我们将项目代码进行构建打包,是一个脚本工具。
Gradle官网:gradle.org
如果你想了解更多与gradle的相关资料,可以通过官网进行了解。
我们通常在build.gradle 下编辑输入的代码叫做groovy语言。如果想了解可以学习groovy语言的基本知识。
Android Gradle 插件
Android Studio 是采用Gradle 进行代码的打包编译以及构建项目的。
但是Gradle是一个开源的自动构建工具,是面向全平台的。所以Android 在基于Gradle进行了二次开发,整合了几项专门用于构建Android应用的功能。
而该工具命名为:com.android.tools.build:gradle:xxxx 。
所以,到这里大家理解两者关系了。
//这个地方是android 自己定制化Gradle的插件版本
classpath 'com.android.tools.build:gradle:3.6.4'
//gradle/wrapper/gradle-wrapper.properties 这个是系统独立的Gradle的版本号。
distributionUrl=https://downloads.gradle-dn.com/distributions/gradle-5.6.4-all.zip
所以,这两个的版本号不统一。
但是,AndroidGradle 是需要依赖于gradle的,所以两个之间的对应关系比较重要
版本对应
Android Gradle 插件版本 | 所需的 Gradle 版本 |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3 - 2.2.3 | 2.14.1 - 3.5 |
2.3.0+ | 3.3+ |
3.0.0+ | 4.1+ |
3.1.0+ | 4.4+ |
3.2.0 - 3.2.1 | 4.6+ |
3.3.0 - 3.3.3 | 4.10.1+ |
3.4.0 - 3.4.3 | 5.1.1+ |
3.5.0 - 3.5.4 | 5.4.1+ |
3.6.0 - 3.6.4 | 5.6.4+ |
4.0.0+ | 6.1.1+ |
4.1.0+ | 6.5+ |
4.2.0+ | 6.7.1+ |
7.0 | 7.0+ |
最新信息
由于以前两个插件的版本一直对应不上,容易造成大家的误解。Android Gradle的版本号 在Gradle发布7.0后,进行了同步。也就是我们在上面看到的。7.0之后就同步上了。两个版本号一致
Android Gradle 7.0+更新
但是从7.0 开始,Android 将会有很大的改变。
工具 | 最低版本 | 默认版本 |
---|---|---|
Gradle | 7.0.2 | 7.0.2 |
SDK Build Tools | 30.0.2 | 30.0.2 |
NDK | 不适用 | 21.4.7075529 |
JDK | 11 | 11 |
也就是我们如果将Android Gradle 升级到7.0后,我们的Gradle必须要在7.0.2以上。并且jdk必须是11.而不再是jdk8了。
依赖项配置变更
compile
根据用例,该配置已被api
或implementation
替换。
同样适用于 *Compile 变体,例如debugCompile
。provided
该配置已被compileOnly
替换。
同样适用于 *Provided 变体,例如releaseProvided
。apk
该配置已被runtimeOnly
替换。publish
该配置已被runtimeOnly
替换。
移除属性和Task
android.enableBuildCache
属性、android.buildCacheDir
属性移除。
cleanBuildCache
任务---我们在Gradle面板上将看不到这个Task任务了。
针对依赖库提高了lint性能检查
也就是我们在编译时针对我们依赖的其他库进行了更高的lint
android {
...
lintOptions {
checkDependencies true
}
}
//如果你的项目是 build.gradle.kts。就用下面的配置
android {
...
lint {
isCheckDependencies = true
}
}
针对缺少类警告
在进行编译时,R8编译器将会更精确的查找依赖项里面的定义或者引用的类是否存在。
不存在的时候会输出:R8: Missing class: java.lang.instrument.ClassFileTransformer
这样,我们就不用在运行时崩溃了才知道有哪些类没有被依赖了。
但我们要忽略该警告,可以通过在proguard-rules.pro 文件中,配置
-dontwarn java.lang.instrument.ClassFileTransformer
来告诉Gradle 忽略缺少类的警告。
android studio使用指定gradle版本 - 简书 (jianshu.com)https://www.jianshu.com/p/10de5d4f8a8a
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)