参考文章点这里
我认识的Gradle
gradle是我们工程的管理器,它可以帮助我们完成依赖、分渠道、打包等功能,它使用了Groovy语言来设置项目,Groovy是一种基于JVM的动态语言,对Java语言有很好的支持。下面我们来分别看一下android项目中的几个gradle。
setting.gradle
setting.gradle存放在我们的工程目录下,顾名思义,它是用来初始化我们的工程的,它里面存放着我们不同module下的build.gradle。
当前我的项目里就有两个module,一个是app,另一个是ui
build.gradle
一、根目录下的build.geadle
1.buildscript
设置了gradle需要使用到的资源。
2.repositories
代表第三方托管平台的仓库。
3.dependencies
导入的依赖,这里导入的是gradle的android插件,用来构建android项目的。gradle插件的版本和studio、gradle的版本是一一对应的,有时候升级AS时,会出现gradle版本不对应的错误,这里是android官方的说明Gradle与android插件(需要科学上网)
4.allprojects
用于为所有项目提供仓库,这样我们可以在每个module的build.gradle里直接配置依赖。
再说一下 apply from
apply from表示引入了一个应用脚本插件,插件的文件名就是config.gradle
ext
ext是自定义属性,我们可以在这里配置一些全局的信息,这样每个module的gradle都会引用这里的信息,便于之后的修改。我们在config.gradle里面定义了版本号和版本名称,我们可以在app的build.geadle使用它,使用config.gradle必须要在protect的build.gradle引入。
二、module下的build.gradle
常用的配置这里就不细说了,大家可以点击最上方的链接,去看一下另外一位作者的。
1.sourceSets
sourceSets是属于Java插件中的,我们可以修改sourceSets中的属性,我们可以指定资源的路径,或者来决定哪些源文件需要被编译,而哪些需要被排除。下面是Java的标准项目目录,大家可以对应修改。
2.productFlavors
可以用来配置多个渠道,多维度。
3.flavorDimensions
用来配置维度,或者在多渠道中修改默认配置时,需要在defaultConfig{}中声明一下,
4.manifestPlaceholders
占位符,用来配置AndroidManifest文件用到的一些信息。
5.buildConfigField
属于BuildType类的一个方法,用来新添加一个字段到BuildConfig类中,BuildConfig类是编译之后生成的,可以用于我们代码中判断当前的编译版本等操作。
上图的flavorDimensions定义了两个维度‘store’和‘free’,再分别在两个不同的渠道上声明不同的维度,这样在编译的时候,就和把我们定义的两个渠道按照维度来合并成一个渠道,我们可以在Build Variants里查看。
这种适合我们需要编译不同需求的包,比如APP有免费版和付费版,并且要发布到渠道A和渠道B上,这样我们就要打出四种不同组合的包,这时我们只要配置好了渠道和维度,就可以方便的打出四个包。
以上。