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目录下会有生成的所有的包。将对应的包上传至对应的渠道即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 09:53:49

Android应用发布的准备——生成渠道包的相关文章

Android批量生成渠道包

1.在www.apache.org上下载ant并在自己计算机上配置Ant的运行环境(我的资源中共享了从Apache下载的ant包,大家也可以自己去官网下载) 2.检测是否安装成功 开始-->运行--cmd--输入ant回车,如果出现以下提示,则表示Ant环境设置已经配置好 3.为了能让ant能批量生成android的apk文件,需要将ant-contrib-1.0b3.jar(我的资源中有此文件可下载)文件放到ant的lib目录中去 4.在Eclipse中指定Ant目录(不要用Eclipse自带

Android应用发布后的统计——百度移动统计的应用

一个App发布到各个渠道之后,我们需要采集不同渠道的一些信息,比如app在运行过程中产生的一些异常信息,app在各个android版本的分布,以及各个app版本的分布,各渠道的用户数,用户忠诚度等等信息.这一切,我们可以使用百度移动统计来实现. 首先,你必须有百度开发者的账号,之后到http://developer.baidu.com/console#app/project创建一个工程,如图我们创建了一个test工程 之后点击test工程,记录api key 然后点击左边菜单的端服务Fronti

美团Android自动化之旅—适配渠道包

概述 前一篇文章(美团Android自动化之旅-生成渠道包)介绍了Android中几种生成渠道包的方式,基本解决了打包慢的问题. 但是,随着渠道越来越多,不同渠道对应用的要求也不尽相同.例如,有的渠道要求美团客户端的应用名为美团,有的渠道要求应用名为美团团购.又比如,有些渠道要求应用不能使用第三方统计工具(如flurry).总之,每次打包都需要对这些渠道进行适配. 之前的做法是为每个需要适配的渠道创建一个Git分支,发版时再切换到相应的分支,并合并主分支的代码.适配的渠道比较少的话这种方式还可以

(转载) Android studio如何生成aar包

Android studio如何生成aar包 标签: Android studio如何生成aaAndroid studio aarAndroid 如何生成aar包 2016-12-21 14:42 1856人阅读 评论(0) 收藏 举报  分类: Android开发(116)  在Android Studio中对一个自己库进行生成操作时将会同时生成.jar与.aar文件. 分别存储位置: *.jar:库 /build/intermediates/bundles/debug(release)/cl

Unity3D脚本批量打包渠道包

最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的机器,可能还有不同的渠道包,不同渠道可能用的SDK都不一样,这一切的一切都表明你的代码无法做到自适应的,除非批量打包提供各个平台的预定义标签#define . Unity默认提供了一些预定义标签如: UNITY_EDITOR  : 编辑器模式下. UNITY_STANDALONE:PC Mac Linux模型下. UNITY_IPHONE:IOS模式下. UNITY_ANDROID:ANDROID模式下

RN在Android打包发布App

参考资料:http://www.jianshu.com/p/b8811669bcb6 RN在Android打包发布App 1-:生成一个签名密钥你可以用keytool命令生成一个私有密钥.在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令.在mac上,直接进入项目根目录输入一下命令: $ keytool -genkey -v -keystore my-rel

Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.properties文件,输入如下内容,其中keystore密码和alias密码可以不指定(防泄漏),那么在命令执行的过程中会要求你输入. [html] view plaincopy #keystore的路径,必须使用正斜杠 key.store=E:/wp_android_sample/me.key #ke

itms-services协议:跳转网页部署及PHP动态生成 iOS渠道包IPA一键安装之plist

相信很多人尝试过使用揣果测试库(http://ipa.chuaiguo.com/)的无线安装测试IPA安装包功能.有心人一定注意到其itms-services协议的一键安装地址的url=部分并不是我们常见的plist文件路径,而是一个install.php通过增加参数的形式自动生成输出了plist.之前因为笔者的项目中渠道包不多,所以懒得去写这样一个文件帮助部署,可是最近,笔者的项目的渠道包不断增多了,显然部署多个plist文件管理上似乎越来越麻烦了,于是笔者开始仿照揣果实现了并结合自己项目的需

使用python判断Android自动化的渠道包是否全部打完

Android客户端测试上线总会有很多的渠道包,渠道的打包可是使用自动化,但是每次打完都是好几十个或者几百个apk,很南确定是不是所有的渠道都已经打完,所以就有了下面的一段代码,主要就是为了检查是否将所有的渠道包打包完毕: # coding=utf-8 import os import xlrd #获取给定excel列表中的所有渠道号 def add_Qudao_Name(): data=xlrd.open_workbook(excel_path) table=data.sheets()[0]