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