zoukankan      html  css  js  c++  java
  • 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所在路径:项目路径appapp-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)
                    }
                }
            }
        }
  • 相关阅读:
    stm32f103和stm32f407的GPIO口模式设置以及相互对应的关系
    基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
    基于51单片机的超声波模块HC-SR04的使用
    用51单片机控制L298N电机驱动模块
    学习笔记——51单片机 单片机与单片机之间的通讯
    基于51单片机的电子密码锁—1
    LCD1602学习调试
    基于51单片机,通过定时器实现的时钟程序
    有进度条圆周率计算
    python turtle 学习笔记
  • 原文地址:https://www.cnblogs.com/shoneworn/p/7722936.html
Copyright © 2011-2022 走看看