最近一直在深挖Android Gradle的學習,發現其實所謂的Android Gradle也不過就是一個gradle外掛,所以如果能學好gradle的開發,我們就可以利用Gradle為我們做很多事,比如干預Android的打包,打出我們想要地apk或者jar,再或者多渠道設定等等。
建立外掛工程
如果想實現對Gradle的開發,肯定需要一個開發Gradle的工程,這個我們可以直接使用Android Studio即可,對於Gradle工程的建立,網上主要有兩種方式
buildSrc
直接在AndroidStudio中建立一個資料夾buildSrc,然後新增src資料夾和build.gradle
檔案,如下圖所示:
build.gradle
中新增如下程式碼:
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
複製程式碼
這樣我們就可以在groovy資料夾中新增對應程式碼進行gradle開發了。
java Library
第二種方式可以使用新建一個Java Library的形式:
這裡注意是Java Library不是android的 Library
我們暫時起名glib
,工程如下圖所示:
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
複製程式碼
然後刪除java資料夾,建立groovy資料夾,以及resources資料夾,如下圖所示:
區別
使用buildSrc可以在該Project中的任何module中直接使用,如果使用新建的Java Library的形式,需要上傳Gradle外掛到原生程式碼庫,這個後面再說,所以下面的例子我們先以buildSrc的方式進行介紹
外掛測試
groovy新建一個TestPlugin.groovy檔案(注意字尾一定要是groovy):
public class TestPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("aaaaaa")
}
}
複製程式碼
gradle外掛都需要在build.gradle中apply,如:apply plugin: 'com.android.application'
所以他需要有一個對外的名字,這就需要resources下的檔案起作用了。
在resources資料夾下建立META-INF/gradle-plugins
:
properties
檔案,這個檔案的名字就是對外的名字,所以起的時候要慎重,我們暫時叫hhh.properties
,名字特殊一點容易看出來。
檔案內容如下:
implementation-class=TestPlugin
複製程式碼
然後我們利用Android Studio自帶的app module做個測試:
然後執行打包可以發現輸出中:上傳到本地倉庫
上面提到了如果使用java Library,需要上傳到本地倉庫才能引用,現在就需要介紹一下如何進行操作 首先需要修改build.gradle檔案:
apply plugin: 'groovy'
apply plugin: "maven"
dependencies {
compile gradleApi()
compile localGroovy()
}
uploadArchives{
repositories{
mavenDeployer{
repository(url:uri('../repo'))
pom.groupId = 'com.test.plugin' // 組名
pom.artifactId = 'test' // 外掛名
pom.version = '2.0.0' // 版本號
}
}
}
複製程式碼
然後執行這個uploadArchives Task 這是會發現,工程下多了一個資料夾:
app module如果需要使用,需要新增依賴:
apply plugin: 'com.android.application'
apply plugin: 'hhh'
buildscript{
repositories{
maven{
url uri('../repo')
}
}
dependencies{
classpath 'com.test.plugin:test:2.0.0'
}
}
// 引用外掛
apply plugin: 'fff'
複製程式碼
總結
今天就暫時先寫到這裡,之後會陸陸續續增加一些關於gradle的相關知識
也歡迎關注我的公眾號,之後會推薦更多好用的元件庫。