Android应用发布的准备——生成渠道包

我们需要使用一个变量标明该app的渠道,通常我们可以在manifest中的application节点下声明,如下。

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

然后将CHANNEL_VALUE的值替换成对应的渠道名。我们可以使用gradle的flavor替我们完成

 productFlavors {
        wandoujia {}
        qihu360 {}
        baidu {}
        hiapk {}
        shoujizhushou {}
        tencent {}
        xiaomi {}
        anzhi {}
        uc {}
        appchina {}
        wangyi {}
        mumayi {}
        huawei {}
        lenovo {}
        flyme {}
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }

当然有时候我们需要配置某些渠道自动更新,某些渠道部自动更新,这时候需要一个变量来标明。我们让所有渠道默认支持自动更新,让豌豆荚的不进行自动更新。

defaultConfig {
        buildConfigField "boolean", "AUTO_UPDATES", "true"
    }
productFlavors {
        wandoujia {
            buildConfigField "boolean", "AUTO_UPDATES", "false"
        }
}

在程序中可以这样获得该变量

boolean autoUpdate=BuildConfig.AUTO_UPDATES;

甚至有时候需要更改生成的apk的名字,这时候可以自己定义生成的名字

//获取产品名
def getProductName() {
    return "ProductName"
}
//获取时间戳
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmm')
    return formattedDate
}
android {
    ...
    //修改生成的apk名字
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def oldFile = output.outputFile
            def newName = '';
            if (variant.buildType.name.equals('release')) {
                def releaseApkName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + '-signed.apk'
                output.outputFile = new File(oldFile.parent, releaseApkName)
            }
            if (variant.buildType.name.equals('beta')) {
                newName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + "-build" + getDate() + ".apk"
                output.outputFile = new File(oldFile.parent, newName)
            }
            if (variant.buildType.name.equals('debug')) {
                newName = getProductName() + "-v${defaultConfig.versionName}-" + variant.productFlavors[0].name + "-debug" + getDate() + ".apk"
                output.outputFile = new File(oldFile.parent, newName)
            }
        }
    }
}

最后我们还需要在程序中获得我们的渠道名进行后续的一些操作,比如做一些统计之类的工作

        String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME");
        Log.d("TAG",channel);

一切完成之后,我们就可以生成渠道包了
打开终端,输入以下命令回车就生成了所有的渠道包

gradlew assembleRelease

此外还可以点击andorid studio右边悬停的的gradle按钮,弹出的窗口里面有个圆形的execute gradle task的按钮,command Line里输入assembleRelease点击ok也可以生成所有渠道包

生成所有渠道包需要一点时间,生成完成后在app/build/outputs/apk目录下会有生成的所有的包。将对应的包上传至对应的渠道即可。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值