多渠道打包gradle插件,支持打包apk和aar

多渠道打包gradle插件(GitHub),支持打包apk和aar,主要功能包括android

  • 讀取渠道配置文件,動態生成ProductFlavor
  • 重命名apk和aar文件名字,根據須要指定輸出目錄
  • 運行多渠道打包任務(multiChannel)時,能夠選擇禁用沒必要要的任務(lintdebugtest),提高打包速度

添加插件

1
2
3
classpath 'io.github.tubb:multichannel:1.0.1'
// apply multi channel plugin
apply plugin: 'io.github.tubb.multichannel'

 

如何使用

插件在頂層定義了appChanneldsl,而且在appChanneldsl下分別定義了channelFlavorConfigbundleOutputConfigtaskConfig三個dsl,分別對應於上面三項功能,下面來看看如何配置git

channelFlavorConfigdsl

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()
    }
}

能夠看到channelFlavorConfigdsl主要用來配置渠道文件的路徑(絕對路徑)。每一個ProductFlavor對應的配置跟日常配置ProductFlavor同樣。這裏要注意的是要主動調用由插件導出的Project.createChannel()方法來主動建立多個ProductFlavorConfiguration phase階段)github

bundleOutputConfigdsl

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'
        }
    }
}

bundleOutputConfigdsl主要用來作app

  • 指定apk和aar輸出目錄(絕對路徑)
  • 按本身的須要重命名apk和aar文件名字

taskConfigdsl

1
2
3
4
5
6
7
appChannel {
	taskConfig {
        disableLintTask true
        disableDebugTask true
        disableTestTask true
    }
}

現階段設定了lintdebugtest三種task的啓用禁用開關,按本身的須要來配置吧測試

aar包的支持

因爲apk包和aar包最終輸出機制基本一致,因此插件一樣適用於aar打多渠道包,插件的使用基本是跟打apk包一致,具體能夠查看librarytestgradle

運行

1
./gradlew clean :moduleName:multiChannel

Note

因爲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和提交PRspa

相關文章
相關標籤/搜索