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/

相关文章
|
Java Android开发
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
482 0
|
4月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
142 0
|
9月前
|
存储 安全 Java
Android如何生成本地或者远程aar
把一定的功能逻辑抽取成一个aar,提供至需要的人,在Android的开发中,这种方式司空见惯,只闻使用方式,不知内部实现,加深了源码的保护措施,又使得功能可以正常开发,相对于一些公司有着外包人员的协同开发,一些主要的功能,不想泄露,那么就可以采取这种方式。
206 0
|
IDE Java 测试技术
第七章 Android Gradle插件
从这章开始我们就开始介绍Android Gradle插件了,会通过几章由浅入深的详细的介绍Android Gradle,本章会简单的介绍下Android Gradle插件,然后通过一个例子对其有大概的了解,最后讲下如果从原来基于Eclipse进行Android开发的方式,转到基于Android Studio,使用Android Gradle插件开发的新方式 7.1 Android Gradle插件简介
295 0
第七章 Android Gradle插件
|
XML 缓存 Java
Android项目的build.gradle文件___Android基础篇
Android项目的build.gradle文件___Android基础篇
534 0
|
缓存 Java Android开发
Android Gradle Plugin 源码解析(上)
一、源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.
2012 0
|
Java Android开发
Android Gradle 多渠道打包
Android Gradle 多渠道打包
574 2
Android Gradle 多渠道打包
|
Java 开发工具 Android开发
android 项目jar包冲突问题解决
android 项目jar包冲突问题解决
android 项目jar包冲突问题解决
|
Java Android开发 架构师
Android Gradle Plugin 源码解析(下)
上半部分请看上一篇文章。 下面是下半部分: Application 的编译任务 我们继续查看createTasksForVariantData的最后一行,taskManager.
1178 0