1.gradle的插件都是通过Project.apply()方法完成的,分为二进制插件和脚本插件。
①二进制插件
实现了org.gradle.api.Plugin接口的插件,它们可以有plugin id.
下面是默认导入的插件
apply plugin : 'java'
其中的java就是plugin id,它对应的类型是org.gradle.api.plugins.JavaPlugin。所以通过类型也能用这个插件:
apply plugin:org.gradle.api.plugins.JavaPlugin
也可以写为:
apply plugin:JavaPlugin
②引用脚本插件
apply from 'version.gradle'
通过from关键字将其他的gradle的文件关联到当前gradle文件中。
其中version.gradle中
ext{
vCode=2
vName="1.0"
}
如果想在android studio中打印gradle内容,需要在Terminal中输入命令即可。
2.apply方法的其他用法
上面的apply plugin:'java’使用的Map类型参数的方法,也可以使用闭包的形式。
apply{
plugin 'java'
}
3.使用第三方插件
第三方发布的jar作为二进制插件,需要在buildscript{}中配置classpath才能使用。gradle的内置插件并不需要这样。
buildscript{}是在构建项目之前,为项目进行前期准备和初始化相关配置依赖的地方,配置好之后才能应用插件。
buildscript {
ext.kotlin_version = '1.3.0'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
4.自定义gradle插件。
①在build.gradle中创建插件并使用,必须实现Plugin接口,这里有一个apply方法,该方法就在插件应用的时候被执行。
apply plugin: 'com.android.application'
apply plugin: myGradlePlugin
android {
......
}
class myGradlePlugin implements Plugin<Project>{
@Override
void apply(Project target) {
target.task("myGradlePluginTask"){
println "自定义插件任务"
}
}
}
②创建一个独立的插件
需要创建一个groovy工程,发布jar包,进行使用,但是没有成功。
https://blog.csdn.net/a646796992/article/details/82259502
5.依赖仓库的组成
implementation 'com.android.support:appcompat-v7:28.0.0'
是用group,name ,version中间用:组成。
6.源集的使用
是一个java源代码和资源文件的集合,通过源集可以方便的访问源代码目录,设置源集的属性,更改源集的java目录或资源目录。
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs("test")
java {
srcDir "src/java1"
println "执行了"
}
}
test {
}
}
sourceSets.all{
println name+"---"+java.srcDirs+"----"+resources+"----"+resources.srcDirs
}
源集的属性:
name
output.classesDir 编译后的class文件目录
output.resourcesDir 编译后生成的资源目录
compileClasspath 编译该源集的所需的classpath
java 源集的java文件
java.srcDirs 源集所在目录
resources 源集的资源文件
resources.srcDirs 源集资源文件的目录
7、默认java插件的属性
sourceSets
archivesBaseName 打包成jar或Zip文件的名字
manifest 用于访问或者配置manifest清单文件
libsDir 存放库类的目录
distsDir 存放生成的发布的文件的目录
8.多项目构建
首先在settings.gradle中添加
include ':FpcLibsProject:module_base'
然后在app中引用的时候
dependencies{
implementation project(':FpcLibsProject:module_base')
}
但是也可以用下面的方式:
首先在settings.gradle中添加,这个是根据其依赖工程的具体目录进行配置。
include ':module_base'
project(':module_base').projectDir=new File(rootDir,"../FpcLibsProject/module_base")
然后在app中引用的时候
dependencies{
implementation project(':module_base')
}
9.设置所有的子工程通用的配置方法
subprojects{
apply plugin : 'java'
}
如果要包括根目录在内的所有的项目,可以使用allprojects。也就是总的工程名下也被进行配置。一般我们不需要