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 公共仓库
492 0
|
5月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
155 0
|
11月前
|
资源调度 JavaScript Android开发
webapp打包为Android的apk包的一种方法
webapp打包为Android的apk包的一种方法
|
12月前
|
Java Android开发
Android Studio使用外部jar包
Android Studio使用外部jar包
107 0
|
XML 缓存 Java
Android项目的build.gradle文件___Android基础篇
Android项目的build.gradle文件___Android基础篇
540 0
|
Java 测试技术 API
第八章 自定义Android Gradle工程
Android Gradle为我们提供了大量的DSL,我们使用这些DSL定义配置我们的工程以满足我们项目中不同的需求。这些DSL有很多,在上一章演示Android Gradle工程示例的时候,我们已经大概介绍了compileSdkVersion、buildToolsVersion以及defaultConfig等,这一章我们再详细介绍一些常用的DSL配置,这些配有有签名信息、构建类型、代码混淆、zipAlign对齐压缩等。
176 0
第八章 自定义Android Gradle工程
|
Java Android开发 C++
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(一)
165 0
|
Java Android开发
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(二)
【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )(二)
176 0
|
Android开发 测试技术 Java
Android 多渠道打包(同一个工程不同包名,不同服务器地址等)
一、参考 1、多渠道打包——同一台设备上同时安装你的正式与测试环境APP 2、Android多渠道打包没你想的那么复杂 3、多渠道打包之动态修改App名称,图标,applicationId,版本号,添加资源 二、应用场景 1、一个APP针对多个应用...
1575 0