zoukankan      html  css  js  c++  java
  • 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右边悬停的的gradlebutton,弹出的窗体里面有个圆形的execute gradle task的button,command Line里输入assembleRelease点击ok也能够生成全部渠道包

    生成全部渠道包须要一点时间,生成完毕后在app/build/outputs/apk文件夹下会有生成的全部的包。将相应的包上传至相应的渠道就可以。

  • 相关阅读:
    vs中如何统计整个项目的代码行数
    EasyDarwin手机直播转发快速显示问题之音频处理过程
    EasyDarwin手机直播转发快速显示问题之音频处理过程
    RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台
    RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台
    EasyDarwin手机直播是如何实现的快速显示视频的方法
    EasyDarwin手机直播是如何实现的快速显示视频的方法
    EasyPusher RTSP直播之RTP数据包格式解析
    EasyPusher RTSP直播之RTP数据包格式解析
    EasyPusher安卓Android手机直播推送之RTSP流媒体协议流程
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5091661.html
Copyright © 2011-2022 走看看