多渠道打包中优雅的配置渠道签名

项目中用到了多渠道打包,由于各个渠道对应了单独的渠道号,和签名密钥(或者说加密用的盐),但是又需要在编译时动态替换代码里的参数配置。我把这些需要配置的内容转移到了build.gradle里,当然,也可以转移到工程的build.gradle,大同小异,为了操作简单,这里贴出我自己用的方法。

主要技术点是BuidConfig的使用。

    productFlavors {
    test900 {
        buildConfigField 'String', 'CHANNEL_SPID', '"900"'
        buildConfigField 'String', 'CHANNEL_SALT', '"290e0d6629511568"'
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "900"]
    }
    test901 {
        buildConfigField 'String', 'CHANNEL_SPID', '"901"'
        buildConfigField 'String', 'CHANNEL_SALT', '"92d7037433951369"'
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "901"]
    }
    test801 {
        buildConfigField 'String', 'CHANNEL_SPID', '"801"'
        buildConfigField 'String', 'CHANNEL_SALT', '"73a40d65fd7d07af"'
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "801"]
    }
    test807 {
        buildConfigField 'String', 'CHANNEL_SPID', '"807"'
        buildConfigField 'String', 'CHANNEL_SALT', '"c5c4e7c91d272b73"'
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "807"]
    }
    test809 {
        buildConfigField 'String', 'CHANNEL_SPID', '"809"'
        buildConfigField 'String', 'CHANNEL_SALT', '"37a1efd05e990e04"'
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "809"]
    }
    ……
 }
其中 manifestPlaceholders属性替换的是清单文件里的
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}"></meta-data>
我们在代码中需要配置参数的地方这样写:
     //SysConfig.SPID和SysConfig.SALT是全局的静态常量
     SysConfig.SPID = BuildConfig.CHANNEL_SPID;
     SysConfig.SALT = BuildConfig.CHANNEL_SALT;
这样就实现了编译期动态配置参数。我们可以一键打出所有渠道包,而不用一个个修改参数再打包了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值