多渠道打包gradle方式(解决类似'360'纯数字渠道名)

    1、AndroidManifest.xml文件中定义一个CHANNEL_NAME,打包的时候、这个值会用自己设定的渠道号替换
    <meta-data
        android:name="CHANNEL_NAME"
        android:value="${CHANNEL_VALUE}"/>
        //在java代码中读取meta-data
        /*ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
            String channel=appInfo.metaData.get("CHANNEL_NAME")+"";*/

    2、build.gradle配置
    defaultConfig {
        manifestPlaceholders = [CHANNEL_VALUE: "2000"]//这里2000是默认值
    }    
    productFlavors {//设置不同的渠道值
        xiaomi{
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:'2001']
        }
        baidu{
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2002"]
        }
        huawei {
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2003"]
        }
        yingyongbao {
            manifestPlaceholders = [MACHAT_CHANNEL_VALUE:"2004"]
        }
   }  
   //定制生成的apk的名字 ${defaultConfig.versionName}  
   applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = 
                outputFile.name.replace(".apk", "-${defaultConfig.versionName}-"+releaseTime()
                +".apk")//
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
    //这样得到的名字是test-xiaomi-release-1.4.2-201802061701.apk
}
def releaseTime() {//打包时间
    return new Date().format("yyyyMMddHHmm", TimeZone.getDefault())
}
3、另外还有一种配置方式,这和方式2是等价的
defaultConfig {
        manifestPlaceholders = [CHANNEL_VALUE: "2000"]//这里2000是默认值
} 
productFlavors {
    "2001"{}
   "2002"{}
   "2003"{}
   "2004"{}
}
productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}
       //定制生成的apk的名字 ${defaultConfig.versionName}  
   applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = 
                outputFile.name.replace(".apk", "-${defaultConfig.versionName}-"+releaseTime()
                +".apk")//
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
    //这样得到的名字是test-2001-release-1.4.2-201802061701.apk

studio 3.0以上的配置

    /*默认为2000
    小米 2001
    百度开发者平台 2002
    华为 2003
    应用宝 2004*/

    flavorDimensions "default"
    productFlavors {
        '2001' { dimension "default" }
        "2002" {dimension "default"}
        "2003" {dimension "default"}
        "2004" { dimension "default" }
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "milu-${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值