android——利用gradle實現多渠道打包並自定義包名(umeng多渠道)


1.首先在mainfest.xml文件中,給umeng_channel設置一個變量“${UMENG_CHANNEL_VALUE}

2.在gradle中,配置flavors。

 productFlavors {
        yingyongbao {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_txyyb"]
      
        }
        s360 {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_360"]
       
        }
        baidu {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_baidu"]
     
        }
        xiaomi {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_xiaomi"]
           
        }
        huawei {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_huawei"]
          
        }
        meizu {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_meizu"]
          
        }
        lenovo {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_len"]
            applicationId 'com.songheng.beijingtianqikuaibao'
        }
        oppo {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_oppo"]

        }
        vivo {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_vivo"]

        }
        ali {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_ali"]

        }
        yingyonghui {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_yyh"]

        }
        sougou {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_sougou"]

        }
        anzhi {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "bjtq_anzhi"]
        }
    }

3.可以直接簽名打包了。

這么打包,apk所在路徑:項目路徑\app\app-anzhi-release.apk 

4.自定義包名方式

  applicationVariants.all { variant ->
        variant.outputs.each { output ->
            if ('release'.equals(variant.buildType.name)) {
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.apk')) {

                    def buildLable = ""
                    def buildName = ""

                    // 是否是連接測試服務器版本
                    if (rootProject.hasProperty('TestServer')) {
                        buildLable = "${buildLable}_Test"
                    } else {
                        buildLable = "${buildLable}_Product"
                    }
            //buildname 是channel名稱
                    variant.productFlavors.each { product ->
                        buildName = product.name
                    }

                    // 是否是testin版本
                    if (rootProject.hasProperty('TestIn')) {
                        buildLable = "${buildLable}_TestIn"
                    }
                    def productName = "bjtqyb"
                    def fileName = "${productName}_v${defaultConfig.versionName}_${releaseTime()}${buildLable}_${buildName}.apk"
                    output.outputFile = new File("${rootDir}/outapks/", fileName)
                }
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM