多渠道打包gradle插件(GitHub),支持打包apk和aar,主要功能包括
- 读取渠道配置文件,动态生成
ProductFlavor - 重命名apk和aar文件名字,根据需要指定输出目录
- 运行多渠道打包任务(
multiChannel)时,可以选择禁用不必要的任务(lint,debug和test),提升打包速度
添加插件
1 | classpath 'io.github.tubb:multichannel:1.0.1' |
如何使用
插件在顶层定义了appChanneldsl,并且在appChanneldsl下分别定义了channelFlavorConfig、bundleOutputConfig和taskConfig三个dsl,分别对应于上面三项功能,下面来看看如何配置
channelFlavorConfigdsl
1 | appChannel { |
可以看到channelFlavorConfigdsl主要用来配置渠道文件的路径(绝对路径)。每个ProductFlavor对应的配置跟平常配置ProductFlavor一样。这里要注意的是要主动调用由插件导出的Project.createChannel()方法来主动创建多个ProductFlavor(Configuration phase阶段)

bundleOutputConfigdsl
1 | appChannel { |
bundleOutputConfigdsl主要用来做
- 指定apk和aar输出目录(绝对路径)
- 按自己的需要重命名apk和aar文件名字
taskConfigdsl
1 | appChannel { |
现阶段设定了lint、debug和test三种task的启用禁用开关,按自己的需要来配置吧
aar包的支持
由于apk包和aar包最终输出机制基本一致,所以插件同样适用于aar打多渠道包,插件的使用基本是跟打apk包一致,具体可以查看librarytest
运行
1 | ./gradlew clean :moduleName:multiChannel |
Note
由于Android gradle plugin版本向后兼容性不是很理想,自己编写、测试插件代码是基于1
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
1 | classpath 'com.android.tools.build:gradle:3.0.1' |
如在其它版本遇到问题,欢迎提Issues和提交PR