AndroidGradle --多渠道打包配置(转发)

简介: 需求 国内Android app发布一般会有多个渠道,为了跟踪发展情况,通常会为每一个渠道定制一个特别的apk。 一般友盟之类第三方统计的渠道ID定义如下,以wandoujia为例 如果不使用第三方统计,自己也可以在AndroidManifest.

需求

国内Android app发布一般会有多个渠道,为了跟踪发展情况,通常会为每一个渠道定制一个特别的apk。

一般友盟之类第三方统计的渠道ID定义如下,以wandoujia为例

      <meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />

如果不使用第三方统计,自己也可以在AndroidManifest.xml中定义类似meta-data

如果每个渠道都手工修改,打包,10几个渠道下来

咱还是自动化来得方便

解决方案

Gradle Android Plugin 0.10 新增了Manifest Merger

For custom placeholders replacements, use the following DSL to configure the placeholders values :

android {

    defaultConfig { 

        manifestPlaceholders = [ activityLabel:"defaultName"] 

    } 

    productFlavors {

        free { 
        } 

        pro { manifestPlaceholders = [ activityLabel:"proName" ] 

        } 
    }
} 

Manifest Merger 可以替换Manifest中对应key的值

所以,可以利用Product flavor + manifestPlaceholder 来替换对应渠道的key

假如我们有wandoujia, Google Play, 两个渠道,可以这么写

AndroidManifest.xml

        <meta-data android:name="UMENG_CHANNEL" android:value="$[CHANNEL_KET]" />

build.gradle

        productFlavors {
            wandoujia{
                manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name]
            }
            google_play{
                manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name]
            }
        }

ok, 搞定,几行代码自动生成对应渠道的apk。 其实是将Manifest中的 UMENG_CHANNEL_VALUE替换成了flavorbuild的name 

可以看到每个flavor里面的代码一样,比较啰嗦,还能在简化下,

        productFlavors {
            wandoujia{
            }
            google_play{
            }
        }

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

一个循环搞定~

-------------------------------------------------------------------------------------------------------------------------------

原文章地址:http://devyang.com/blog/2014/11/03/android-gradle-duo-qu-dao-da-bao-pei-zhi/

相关文章
|
关系型数据库 MySQL 数据库
Windows安装MySQL数据库
本文介绍如何在Windows安装MySQL数据库。
279 0
|
8月前
|
移动开发 数据可视化 前端开发
tmagic - editor:大厂开源项目,零代码/低代码页面可视化编辑的利器,多端统一方案揭秘!如何用一套代码支持H5/PC,牛牛牛~~~
腾讯推出的开源项目 **tmagic-editor** 是一款所见即所得的页面可视化编辑器,支持H5、PC、TV等多种页面类型。它已应用于腾讯视频会员、腾讯会议等业务,每月生产和发布数百个页面,极大提高了开发效率。通过简单的拖拽和配置,非技术人员也能轻松创建复杂页面。tmagic-editor 支持 Vue2/Vue3 和 React 等多种前端框架,并提供了丰富的扩展功能,满足不同业务需求。
747 3
|
NoSQL Java Redis
SpringBoot 操作 Redis
SpringBoot 操作 Redis
101 2
|
机器学习/深度学习 计算机视觉 文件存储
YOLOv5改进系列(5)——替换主干网络之 MobileNetV3
YOLOv5改进系列(5)——替换主干网络之 MobileNetV3
10640 3
YOLOv5改进系列(5)——替换主干网络之 MobileNetV3
|
存储 NoSQL Java
(Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
(Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
3116 0
(Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
|
Linux Android开发
认知篇----学习Linux的基本方法与路线
大家好我是ST。 今天主要和大家聊一聊,如何学习linux,重点要关注哪些,希望对大家有所帮助。
131 0
认知篇----学习Linux的基本方法与路线
|
开发框架 .NET 应用服务中间件
ASP.NET Core : 一. 概述
ASP.NET Core : 一. 概述
196 0
ASP.NET Core : 一. 概述
|
移动开发 Windows
socket编程的select模型
在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户端都需要去开辟一个新的线程,效率必定底下。
817 0
可行性研究报告
    看大图请点击:这 里
782 0