1. 程式人生 > >jenkins+gradle 引數配置 Jenkins引數注入多渠道打包

jenkins+gradle 引數配置 Jenkins引數注入多渠道打包

AndroidManifest.xml檔案

<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_NAME}"
/>

gradle  定義方法接受Jenkins的上面配置的String引數,Jenkins上的引數以;分隔開(baidu;wandoujia)

輸出多渠道包

def getJenkinsVersion() {
    def channels = System.getenv("PRODUCT_FLAVOR_BUILD");
    // String channels="local;dadad;okok"
channels.toString().tokenize(';'
).each { channelItem -> android.productFlavors.create(channelItem, { // 替換渠道號 manifestPlaceholders = [CHANNEL_NAME: channelItem] }) } }
    libraryVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if 
(outputFile != null && outputFile.name.endsWith('.aar')) { // 顯示app名稱+當前版本號 // def fileName = "Your App Name-V${variant.versionName}" // def fileName ="v"+getJenkinsVersion()+"_"+getJenkinsBuild() //def fileName =getJenkinsBuild() def
fileName="v"+getJenkinsBuild() // 如果有渠道,顯示渠道名"" if (variant.flavorName!=""){ fileName = fileName + "-${variant.flavorName}" } // 加入打包時間 fileName = fileName + "-${releaseTime()}" // 如果是debug版本,加入版本號 if ('debug'.equals(variant.buildType.name)) { fileName = fileName + "debug.apk" } else { // 如果是release版本,直接顯示 fileName = fileName + "-release.apk" } output.outputFile = new File(outputFile.parent, fileName) } } } }