这篇文章主要是在前几篇文章的基础上实现一个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便可。
今天将插件的全部功能介绍完毕了,若是有需求,也能够给我留言,我会再开一篇文章介绍一下代码,方便你们修改代码。