Android中基於Gradle進行編譯打包的過程,下面記錄一下如何進行Gradle插件開發的過程:html
首先在項目中新建的一個名爲buildSrc的module,爲何叫這個名字請看官方文檔。而後將Java文件夾以及res文件夾刪除,新建groovy文件夾以及resource文件夾:java
在groovy文件夾下新建package的目錄,在我這依次是com/lin/plugin,而後在resource文件夾下創建META-INF/gradle-plugins兩個文件夾,在文件夾中添加包名.properties文件,其內部代碼以下:android
implementation-class=com.lin.plugin.TestPlugin
TestPlugin.groovy的代碼以下:app
class TestPlugin implements Plugin<Project> { @Override void apply(Project project) { println('--------------------------') println('this is a buildSrc plugin...') println('--------------------------') } }
修改buildSrc的build.gradle文件:maven
//添加groovy和maven插件 apply plugin: 'groovy' apply plugin: 'maven' //本地發佈插件 uploadArchives { repositories { mavenDeployer {//用於發佈本地maven pom.groupId = "com.lin.plugin" pom.artifactId = "test" pom.version = "0.0.1" repository(url: uri('../repo')) } } } task sourcesJar(type: Jar) { from project.sourceSets.main.groovy.srcDirs classifier = 'sources' } task javadocJar(type: Jar, dependsOn: groovydoc) { classifier = 'javadoc' from groovydoc.destinationDir } artifacts { archives javadocJar archives sourcesJar } //插件依賴 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile gradleApi() compile localGroovy() }
而後在項目根目錄的build.gradle中添加本地maven庫,目的是爲了可以在主工程中使用咱們建立的插件:ide
buildscript { repositories { google() jcenter() mavenCentral() maven{ url uri('./repo')//本地maven,用於發佈測試插件 } } dependencies { classpath 'com.android.tools.build:gradle:3.3.0' classpath 'com.lin.plugin:test:0.0.1'//本地maven,依照上面uploadArchives內的命名組裝 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
進行編譯,編譯完成後在插件的gradle命令中能夠看到多出了以下命令:測試
雙擊該命令用於構建插件庫,構建完成後可以在項目根目錄下看見生成問maven文件:gradle
而後將插件導入咱們的主工程build.gradle當中ui
apply plugin: 'com.lin.plugin'
運行assemble命令,構建項目,能夠run窗口看到TestPlugin的執行:this
經過該方式就編譯好了一個Plugin插件了,若是項目須要針對apk的編譯打包流程作一些處理的話,就能夠使用上述的插件進行hook的操做了,關於更多的gradle使用方法,移步官網閱讀便可。