当前位置:   article > 正文

Gradle常用总结_android gradle plugin version 和 gradle version

android gradle plugin version 和 gradle version

前言

之前在多版本多渠道打包,还有混淆相关的文章中对gradle相关的内容有一部分的了解,但是没有系统综合的总结过相关的知识内容,这里就一些碰到的问题做一下总结!

什么是Gradle?

Gradle是一个开源的自动化构建工具,被应用在AS中去构建我们的Android项目,代替了之前Eclipse中的ant。首先我们要明确一点,Gradle不是一种语言,它使用的是Groovy语言,关于Groovy,这里不多说,想要了解的可以查阅一些资料。

Gradle version和Gradle plugin version的区别

好像15年之前,Android Studio都没怎么普及,我第一次接触AS之后,也是被其中的编译配置搞懵逼了,那时候墙的厉害,各种编译不过,有的时候前一次编译过了,后一次就又不过!
Gradle version:对应的是Gradle官方发行的release版本,跟Android Studio半毛钱关系没有。
具体在gradle-wrapper.properties文件中:

...
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
  • 1
  • 2

Gradle plugin version:这个说的插件是指AS中的Gradle插件,是AS以Gradle发行版本为基础,结合Android SDK Build Tools专用于构建 Android 应用的插件。
具体在项目的build.gradle中:

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

一般来说,每次AS的大版本更新,都会有一次Gradle插件的更新,而且两者的版本号基本上一样,当然也会有AS更新,但是插件不更新的情况。也就是说Gradle插件是独立于AS单独维护更新的。

再说回gradle和gradle plugin,两者的区别上边已经说清楚了,关于两者的版本对应关系可以到AS官网这个页面查看:版本对应关系

AS中的Gradle配置

这里以最新的AS4.0为例,其中gradel配置页面较之前版本UI有所改变,但是内容不变:
在这里插入图片描述
默认情况下,使用的是gradle-wrapper.properties这个文件中的配置:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.11-all.zip
  • 1
  • 2
  • 3
  • 4
  • 5

它会先在GRADLE_USER_HOME这里边去找有没有对应的版本(这里是6.1.1),如果没有则去distributionUrl这个地址去下载,下载完成则会放在distributionPath对应的文件夹下。
说个题外话,上边提到早期墙的厉害,导致这个url下载不了,就出现项目死活编译不了的问题。

我们也注意到下边还有一个Specified location,就我们手动指定Gradle目录位置,其实我们在下载更新一个版本的AS后,这个安装目录中就带有该Gradle插件所依赖的最新版的gradle,我们直接将该gradle地址,写在后边即可!编译的时候,就会直接使用本地的gradle,而不会再去GRADLE_USER_HOME查找下载了!

Gradle构建流程

通常来说,Gradle一次完整的构建过程通常分成如下 三个部分:
初始化阶段:首先,在初始化阶段 Gradle 会决定哪些项目模块要参与构建,并且为每个项目模块创建一个与之对应的 Project 实例。
配置阶段:然后,配置工程中每个项目的模块,并执行包含其中的配置脚本。
任务执行:最后,执行每个参与构建过程的 Gradle task。

详细可以参考:深度探索 Gradle 自动化构建技术(三、Gradle 核心解密)
文章写的非常好!建议阅读!

常用命令和配置

多版本多渠道打包
这个就不在赘述了,之前有篇文章总结过,需可以查看:
Android Gradle 多版本多APK打包,修改生成APK名称

另外在设置不同的编译类型变量时,比如设置不同的baseUrl地址,也可以这样写:

buildTypes {
    ...
	preRelease {
	    initWith(release)
	    buildConfigField "String", "BASE_URL", "\"https://xxxxxxxx/\""
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们在使用的时候,直接使用BuildConfig.BASE_URL即可!
使用 exclude 来排除三方库中某些不需要或者是重复的依赖
比如之前常见的v4包冲突

implementation ('com.xx.xx:XXX:1.0.0') {
    exclude group: 'com.android.support' 
}
  • 1
  • 2
  • 3

命令

./gradlew projects #从root从上往下列出所有的project
./gradlew tasks #列出项目中所有的任务
./gradlew dependencies #列出项目中所有的依赖

./gradlew clean #clean,相当于清空build文件夹
./gradlew build #编译打包
./gradlew installDebug #编译并安装debug包

./gradlew assembleDebug #编译并打所有渠道的debug包
./gradlew assemble #编译并打所有渠道的debug,release包
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/619108
推荐阅读
相关标签
  

闽ICP备14008679号