這篇文章主要是在前幾篇文章的基礎上實現一個Android打包的插件,因此沒看過前幾篇文章的朋友能夠先查看:android
Gradle插件學習筆記(二)github
Gradle插件學習筆記(三)bash
原本想將寫的插件上傳到maven提供給你們使用,可是後來仍是決定以開源庫的形式提供給你們,主要是由於微信
因爲並無上傳maven,只須要把demo工程中的buildSrc文件夾粘貼入本身的工程便可使用 有問題能夠issues我,或者微信公衆號給我留言: 個人公衆號: app
這個插件的主要功能分爲三部分maven
修改 apk module的build.gradle
post
apply plugin: 'deep.app'
deep{
name "{name}_{type}_{flavor}_deep.apk"
path "../out"
holder= [aaa:123,bbb:666]
}
複製代碼
參數 | 描述 |
---|---|
name | 輸出的apk名字 |
path | 指定輸出路徑 |
holder | AndroidManifest指定替換的字段 如上述:將AndroidManifest中的aaa替換成123,bbb替換成666 |
須要注意的是若是想指定名字爲普通名字直接輸入字符串便可,若是須要與變異模式綁定,只須要加{}:學習
參數 | 描述 |
---|---|
{name} | 當前module的名字 |
{type} | 編譯方式,debug release或其它自定義的模式 |
{flavor} | flavor,若是沒有自定義就沒有 |
效果以下: gradle
可能有開發者會問,爲何沒有提供選擇打包文件的功能,即不一樣apk打包不一樣文件,若是有這種需求的朋友,建議使用flavor,android提供了flavor能夠很方便設置打包出不一樣報名不一樣內容的apk,若是對flavor感興趣的朋友能夠給我留言,或者查看我以前的一片文章Android工程gradle詳解
打包aar或jar提供了兩種不一樣形式配置
apply plugin: 'deep.library'
deep {
aar{
name "{name}_{type}_{flavor}_deep.aar"
path "../out/aar"
holder= [aaa:123,bbb:666]
}
jar{
name "{name}_{type}_{flavor}_deep.jar"
path "../out/jar"
excludeClass=['com/deep/test/exclude.class']
excludePackage=['exclude']
isProguard true
includeJar = ["libs/open_sdk_r5923_lite.jar"]
}
}
複製代碼
aar中參數說明:
參數 | 描述 | 備註 |
---|---|---|
name | 輸出的aar名字 | 特殊參數與apk一致,這裏不作贅述 |
path | 指定輸出路徑 | |
holder | AndroidManifest指定替換的字段 | 如上述:將AndroidManifest中的aaa替換成123,bbb替換成666 |
效果以下:
jar中參數說明:
參數 | 描述 | 備註 |
---|---|---|
name | 輸出的jar名字 | 特殊參數與apk一致,這裏不作贅述 |
excludeClass | 打成jar,不包含的文件 | |
excludePackage | 打成jar 不包含的package | |
isProguard | 是否混淆 | |
prpguardFile | 混淆文件 | 相對於module路徑的,不設置,默認使用proguard-rules.pro |
includeJar | 須要打入的三方jar |
效果以下:
有的時候,咱們以爲gradle的打包日誌都是英文很煩,沒用頁也看不懂,不要緊,使用這個功能能夠開關日誌,或打印本身須要的日誌。 選擇使用的module,修改build.gradle
import com.deep.DeepLogger
import com.deep.DeepTimeListener
gradle.useLogger(new DeepLogger(true))
gradle.addListener(new DeepTimeListener(true))
複製代碼
若是不想使用,只須要將參數設置爲false便可:
這些日誌的提示內容都是能夠設置: 只須要修改DeepLogger
文件,這裏面有全部任務的生命週期,只須要插入你想要的log便可。
今天將插件的全部功能介紹完畢了,若是有需求,也能夠給我留言,我會再開一篇文章介紹一下代碼,方便你們修改代碼。