Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android Studio 使用Gradle多渠道打包

Android Studio 使用Gradle多渠道打包

作者头像
非著名程序员
发布于 2018-02-02 06:45:46
发布于 2018-02-02 06:45:46
95100
代码可运行
举报
文章被收录于专栏:非著名程序员非著名程序员
运行总次数:0
代码可运行

我们都知道国内应用市场非常多,为了统计各个应用市场的app下载量和使用情况,我们需要多渠道的打包。如果一个一个的手动去打包岂不烦死了,要多麻烦就有多麻烦。这就要求我们学会使用Gradle进行多渠道打包。废话不多说了,直接进入正题吧!

第一步:配置AndroidManifest.xml

以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,大约如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta-data android:name="UMENG_CHANNEL" android:value="xiaomi" />

如果不使用多渠道打包方法,那就需要我们手动一个一个去修改value中的值,xiaomi,360,qq,wandoujia等等。 使用多渠道打包的方式,就需要把上面的value配置成下面的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta-data    android:name="UMENG_CHANNEL"    android:value="${UMENG_CHANNEL_VALUE}" />

其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。

第二步: 在build.gradle设置productFlavors

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
productFlavors {
     wandoujia {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
     }

     xiaomi{
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
     }

     qq {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"]
     }

     _360 {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
     }

}

其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是对应${UMENG_CHANNEL_VALUE}的值。 我们可以发现,按照上面的方式写,比较繁琐,其实还有更简洁的方式去写,方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android { 
    productFlavors {
        wandoujia{}
        xiaomi{}
        qq{}
        _360 {}
    } 

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

其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。 这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证。

第三步:一次生成所有渠道包

我们可以使用CMD命令,进入到项目所在的目录,直接输入命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle assembleRelease

就开始打包了,如果渠道很多的话,时间可能会很长。

或者,当然Android Studio中的下方底栏中有个命令行工具Terminal,你也可以直接打开,输入上面的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle assembleRelease

用CMD进入到项目所在目录执行,或者用AS中自带的命令行工具Terminal其实性质都是一样的。

注意:如果没有对gradle配置的话,可能输入上面的命令,会提示“不是内部或者外部命令”,不要着急,我们只需要找到gradle的目录,把它配置到电脑中的环境变量中去即可。

配置方式如下:

先找到gralde的根目录,在系统变量里添加两个环境变量:

变量名为:GRADLE_HOME,变量值就为gradle的根目录;

所以变量值为:D:\android\android-studio-ide-143.2739321-windows\android-studio\gradle\gradle-2.10

还有一个在系统变量里PATH里面添加gradle的bin目录

我的就是D:\android\android-studio-ide-143.2739321-windows\android-studio\gradle\gradle-2.10\bin

这样就配置完了,不信赶紧去试试,执行以下这个命令:gradle assembleRelease。是不是可以了。

第四步:如果要带签名的话,就得在build.gradle进行相关签名的配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//签名
signingConfigs{
     release {
          storeFile file("keystore路径")
          storePassword "***"
          keyAlias "***"
          keyPassword "***"
     }
}

buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

第五步:修改导出包的apk名称

我们打包有非常多的渠道包,所以我们可以根据渠道自定义apk的名称,方便运营人员看嘛,知道哪个apk对应的哪个渠道嘛。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android {

    applicationVariants.all { variant ->

        variant.outputs.each { output ->

            output.outputFile = new File(

                    output.outputFile.parent,

                    "xxxx(apk的名字)-${variant.buildType.name}-${defaultConfig.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())

        }

    }

}

最后打包完成之后,apk文件就会生成在项目的build\outputs\apk下。

我知道看到这里肯定会有很多人说,这种方式太落伍了,打包速度太慢了,是的,所以啊,我准备下篇文章重点讲解打包原理和高效的美团快速打包方式,据说是一分钟能打900个包的速度。期待吧,而且代码都帮你们写好了,直接用即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
studio grandle渠道打包
1. Mainfest 文件中添加一个键值对,这里的value 我定义为 “UMENG_CHANNEL_VALUE”(当然实际应用中可以根据自己的需要命名),后面打包的时候会对这个值进行替换。 <meta-data android:value="UMENG_CHANNEL_VALUE" android:name="UMENG_CHANNEL"/> 2. 打开app下的build.gradle(你的model下的build.gradle)进行配置,注意我们这里选择的build.gradle是app目录
xiangzhihong
2018/02/01
4370
AndroidStudio3.0多渠道打包:我用一行命令打出N个包
csdn: http://blog.csdn.net/k_bb_666
蜻蜓队长
2018/08/03
4020
AndroidStudio3.0多渠道打包:我用一行命令打出N个包
Gradle多渠道打包
国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App!
GitOPEN
2019/03/01
1.1K0
Android项目实战(三十五):多渠道打包
多渠道打包:   可以理解为:同时发布多个渠道的apk。分别上架不同的应用商店。这些apk带有各自渠道的标签,用于统计分析各个商店的下载次数等数据。   实现步骤 一、添加友盟渠道标签     添加位置:app目录下的 AndroidManifest.xml文件      添加语句:     <!--多渠道打包--> <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>     示
听着music睡
2018/05/18
1K0
studio多渠道打包
由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了。 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的 Channel_ID 就是渠道标示。我们的目标就是在编译的时
xiangzhihong
2018/01/30
7440
android友盟统计分渠道打包
什么是多渠道包 渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等 产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。
再见孙悟空_
2023/02/10
6330
android友盟统计分渠道打包
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
最近有个需求一次要打包9个类型的App,而且常量和String.xml都有变量。虽然之前也是一直存在变量,但是每次也仅仅只打包一个。这让我每次改变量,打包9个。要是以后每次都打包9次,我得疯了。 根据之前的了解,gradle 应该是可以解决这个问题的。所以就仔细研究了一番。
用户2802329
2018/08/07
1.9K0
Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
使用Gradle管理你的Android Studio工程
关于Android Gradle更多详细内容已经出书《Android Gradle权威指南》,大家可以购买,看更多没有介绍的知识点和内容,购买链接如下
飞雪无情
2018/08/28
1.1K0
Android Studio 多渠道打
build.gradle实例: apply plugin: 'com.android.application' android { /** * 设置编译 sdk 和编译工具的版本 */ compileSdkVersion 19 buildToolsVersion "24.0.3" /** * 为所有的 build variants 设置默认的值. 关于 build variant, 我们后面会用一张图片说明 */ defau
霡霂
2018/06/04
5730
第十一章 Android Gradle多渠道构建
因为我们发布或者推广的渠道不同,就造成了我们的Android App可能会有很多个,因为我们需要细分他们,才能针对不同的渠道做不同的处理,比如统计跟踪、是否升级、App名字是否一致等等。尤其在国内这个各种应用市场百家争鸣的时代,我们需要发布的App渠道甚至多个好几百个,而且各有各的特殊处理,所以这就更需要我们有一套自动的满足多渠道构建的工具来帮我们解决这个问题,有了Android Gradle的Flavor后,我们就可以完美的解决以上问题,并且可以实现批量自动化。这一章主要介绍多渠道构建的基本原理,然后使用Flurry和友盟这两个最常用的分析统计平台作为例子来演示多渠道构建,接着我们介绍下Flavor的每个配置的用法,让大家可以根据需求定制自己的每个渠道,最后我们会介绍一种快速打包上百个渠道的方法,以提高多渠道构建的效率。
acc8226
2022/05/17
8980
第十一章 Android Gradle多渠道构建
关于Gradle配置的小结
使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置,抛弃了基于 XML 的各种繁琐配置 (此定义来自于百度百科-_- !) 。啰里啰唆一堆,幸运的是,一般来说 Android 开发者只要会配置 Gradle 就可以了,并不需要深入了解。那么下面我们就来揭开 Gradle 的面纱吧。
俞其荣
2022/07/28
6360
关于Gradle配置的小结
Android自动化构建之Ant多渠道打包实践(下)
前言 上一篇(Android自动化构建之Ant多渠道打包实践(上))已经介绍了Android的apk是如何构建的,本篇博客继续Ant打包的实践过程。 集成友盟统计SDK 这里以友盟统计为例,对各个渠道进行统计,我们需要先集成它的SDK 配置权限 <!-- 权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permis
巫山老妖
2018/07/20
4430
android如何多渠道打包?
关于如何多渠道打包,以下文字详细解答了Android如何实现多渠道打包以及快速打包。
分你一些日落
2021/11/25
1.5K0
相关推荐
studio grandle渠道打包
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档