Gradle 学习
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL, domain-specific language )来声明项目设置,而不是传统的XML。
gradle是一个自动化工具。配置gradle时,使用的是Groovy语言。Groovy的语法与Java类似。
Gradle作为一个异常强大的构建工具,为了满足不同平台的需求,比如:Java平台有Java构建逻辑,Android平台有Android构建逻辑。Gradle务必是要支持自定义构建的,这个功能正是由Gradle Plugin提供,而对应于Android工程的构建逻辑就是由Android Gradle Plugin实现的了。
Gradle插件结构
自定义gradle插件时,既可以使用groovy语言,也可以使用Java或者Kotlin语言。一般我都是使用groovy语言。
自定义插件的目录结构如下:
plugin
└── src
└── main
| ├── groovy
| | └── com
| | └── package
| | └── name
| └── resources
| └── META-INF
| └── gradle-plugins
|_ build.gradle
由上述插件结构可知,自定义插件大致可分为三个部分。groovy目录,resources目录和build.gradle配置文件。
build.gradle
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation gradleApi()
implementation localGroovy()
}
META-INF/gradle-plugins
在META-INF/gradle-plugins 目录下添加一个属性文件,主要用来使得Gradle找到该插件。
implementation-class=com.nxiangbo.plugin.main.CustomPlugin
Groovy 目录
为了创建Gradle插件,我们必须创建一个实现Plugin
接口的类。当我们将自定义的插件应用到项目时,Gradle就会创建这个类的实例,并调用这个类的apply()
方法。而project作为该方法的参数,因此插件可以使用project的配置。下面我们在groovy目录下创建CustomPlugin.groovy。
class CustomPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
// TODO
}
}
发布插件
只需要在build.gradle文件中添加uploadArchives task就可以将插件发布到本地。
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('D:/repo'))
}
}
}
}
应用插件
在需要使用该插件的项目中的build.gradle 文件中,添加如下代码
apply plugin: 'customplugin'
customPlugin {
versionName='version'
versionCode='1.1.0'
}
Gradle插件调试
首先,在Android Studio 中设置Edit Configurations -> +号 -> Remote -> 填写Host和端口号
![](https://img.haomeiwen.com/i7819453/c785a181c2c7930b.png)
然后,运行gradle :app:clean -Dorg.gradle.debug=true --no-daemon
![](https://img.haomeiwen.com/i7819453/67b2cacbc9752897.png)
网友评论