1. 新建android module.
module名就叫做asm_lifecycle_plugin(可以隨意起)吧
2. 刪掉module下的src/main/下的所有文件夾
3. 修改mudule下的build.gradle,
build.gradle內(nèi)容如下
apply plugin: 'groovy'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
compile gradleApi()
compile localGroovy()
compile 'com.android.tools.build:gradle:3.6.3'
}
4. 實現(xiàn)Plugin邏輯
src/main/下創(chuàng)建groovy文件夾, 添加包名com.houtrry.asm_lifecycle_plugin(可以隨意起), com.houtrry.asm_lifecycle_plugin下創(chuàng)建groovy文件, LifeCyclePluginDemo.groovy(文件名可以隨意, 但是后綴得是groovy).
示例如下,這里只是打印project名字(在plugin中,各個module和主工程app都是project)
package com.houtrry.asm_lifecycle_plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class LifeCyclePluginDemo implements Plugin<Project> {
@Override
void apply(Project project) {
println "===${project.name}===="
}
}
5.創(chuàng)建resources
src/main 下依次創(chuàng)建三個文件夾, resources\META-INF\gradle-plugins(注意, 這里這三個文件夾的名字是固定的, 不能寫錯).
6.創(chuàng)建properties
在步驟5創(chuàng)建的文件夾gradle-plugins下創(chuàng)建lifecycle_plugin_properties_file_name.properties文件。
文件內(nèi)容是
implementation-class=com.houtrry.asm_lifecycle_plugin.LifeCyclePluginDemo
其中 <implementation-class=> 是固定寫法,后面的內(nèi)容是步驟4里繼承了Plugin的類的路徑
注意:①文件后綴必須是properties朽寞。
②文件名可以隨便寫,但是這個文件名就是后面我們引入插件apply plugin: 'lifecycle_plugin_properties_file_name'時,單引號內(nèi)傳入的插件名
7. 修改module下的build.gradle绽昏,添加本地maven相關(guān)內(nèi)容
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
compile gradleApi()
compile localGroovy()
compile 'com.android.tools.build:gradle:3.6.3'
}
group = 'com.houtrry.lifecycle_plugin_group'
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//本地的maven倉庫地址設(shè)置
repository(url:uri('../repo'))
}
}
}
group和version的內(nèi)容可以隨便寫,但是后面會用到
本地maven倉庫名repo也可以修改
8.構(gòu)建項目俏脊,上傳到本地maven倉庫
構(gòu)建完成后全谤,如圖gradle中出現(xiàn)了asm_lifecycle_plugin,雙擊Tasks/upload下的uploadArchives
成功后爷贫,項目目錄下會出現(xiàn)repo文件夾认然,里面放著生成好的插件信息和文件
注意:①如果Gradle沒有出現(xiàn)asm_lifecycle_plugin,可以查看下setting.gradle中是否include了mudule漫萄,如果沒有卷员,就加上在build
9.項目中引入plugin
①project下的build.gradle中,buildscript下卷胯,repositories里添加maven { url uri('./repo') } 注意子刮,這個repo要和步驟7里設(shè)置的maven倉庫名一致。dependencies下添加plugin窑睁,plugin由3部分組成挺峡,plugin mudule下build.gradle中聲明的group + plugin mudule名字 + plugin mudule下build.gradle中聲明的version
②app下的build.gralde中 引入plugin依賴
apply plugin: 'lifecycle_plugin_properties_file_name'
單引號內(nèi)的內(nèi)容就是步驟6創(chuàng)建的properties文件的文件名
到這里就算完成了gradle plugin項目的創(chuàng)建了。需要注意的是担钮,如果plugin的內(nèi)容發(fā)生了變化橱赠,就需要重新執(zhí)行一遍步驟8,重新上傳到本地maven倉庫