多渠道打包gradle插件(GitHub),支持打包apk和aar,主要功能包括android
ProductFlavor
multiChannel
)時,能夠選擇禁用沒必要要的任務(lint
, debug
和test
),提高打包速度 1 2 3 |
classpath 'io.github.tubb:multichannel:1.0.1' // apply multi channel plugin apply plugin: 'io.github.tubb.multichannel' |
插件在頂層定義了appChannel
dsl,而且在appChannel
dsl下分別定義了channelFlavorConfig
、bundleOutputConfig
和taskConfig
三個dsl,分別對應於上面三項功能,下面來看看如何配置git
channelFlavorConfig
dsl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
appChannel { channelFlavorConfig { channelConfigFilePath '/Users/tubingbing/StudioProjects/MultiChannelPlugin/app/channels.txt' configProductFlavor { name -> if ('qq'.equals(name)) { // for test return { dimension 'default' manifestPlaceholders = [ channel:"${name}_yyb" ] } } else { return { dimension 'default' manifestPlaceholders = [ channel:name ] } } } // must call after configProductFlavor dsl createChannel() } } |
能夠看到channelFlavorConfig
dsl主要用來配置渠道文件
的路徑(絕對路徑)。每一個ProductFlavor
對應的配置跟日常配置ProductFlavor
同樣。這裏要注意的是要主動調用由插件導出的Project.createChannel()
方法來主動建立多個ProductFlavor
(Configuration phase
階段)github
bundleOutputConfig
dsl 1 2 3 4 5 6 7 8 9 |
appChannel { bundleOutputConfig { outputDir '/Users/tubingbing/channels' renameBundleFile { project, variant -> // rename apk file project.name + '-' + variant.flavorName + '-' + variant.buildType.name + '-' + variant.versionName + '.apk' } } } |
bundleOutputConfig
dsl主要用來作app
taskConfig
dsl 1 2 3 4 5 6 7 |
appChannel { taskConfig { disableLintTask true disableDebugTask true disableTestTask true } } |
現階段設定了lint
、debug
和test
三種task的啓用禁用開關,按本身的須要來配置吧測試
因爲apk包和aar包最終輸出機制基本一致,因此插件一樣適用於aar打多渠道包,插件的使用基本是跟打apk包一致,具體能夠查看librarytestgradle
1 |
./gradlew clean :moduleName:multiChannel |
因爲Android gradle plugin
版本向後兼容性不是很理想,本身編寫、測試插件代碼是基於ui
1 |
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip |
1 |
classpath 'com.android.tools.build:gradle:3.0.1' |
如在其它版本遇到問題,歡迎提Issues
和提交PR
spa